OTRS Offers an Ideal Solution for Companies of Any Size Learn more

介绍

This manual is intended for use by system administrators. The chapters describe the updating of the OTRS software.

There is no graphical user interface for updating. System administrators have to follow the steps described in the following chapters.

所有控制台命令看起来都像 username> command-to-execute。 username（用户名）表示需要用来执行这些命令的操作系统的用户帐户。 如果命令以 root> 开头，则必须以具有 root 权限的用户身份执行该命令。 如果命令以 otrs> 开头，则必须按照为 OTRS 创建的用户执行命令。

警告

复制命令并将其粘贴到 shell 时，不要选择 username> 部分， 否则你会出错。

We supposed that OTRS is installed to /opt/otrs. If OTRS is installed to a different directory, then you have to change the path in the commands or create a symbolic link to this directory.

root> ln -s /path/to/otrs /opt/otrs

OTRS Offers an Ideal Solution for Companies of Any Size Learn more

硬件和软件要求

OTRS 可以安装在 Linux 和其他的 Unix 派生版本（例如 OpenBSD 或 FreeBSD）上，无法在 Microsoft Windows 上运行 OTRS。

要运行 OTRS，您还需要使用 Web 服务器作为反向代理和数据库服务器。 除此之外，您应该在 OTRS 计算机上安装 Perl 和/或安装一些额外的 Perl 模块。

Perl 必须与 OTRS 安装在同一台机器上。 数据库后端和 Web 服务器可以本地安装，也可以安装在其他主机上。

对于 Perl，您将需要一些额外的模块，可以使用 Perl shell 和 CPAN 安装，也可以通过操作系统的包管理器（rpm、yast、apt-get）安装。

OTRS 有一个控制台命令来检查环境和缺少的模块。

otrs> /opt/otrs/bin/otrs.CheckEnvironment.pl

如果缺少某些软件包，使用 --list 选项运行脚本，则可以获取当前操作系统安装这些软件包的命令。

otrs> /opt/otrs/bin/otrs.CheckEnvironment.pl --list

如果安装了所有需要的软件包，则环境检查脚本的输出将显示已安装的软件包和版本号。

Checking for Perl Modules:
  o Archive::Tar.....................ok (v2.24)
  o Archive::Zip.....................ok (v1.63)
  o Crypt::Eksblowfish::Bcrypt.......ok (v0.009)
  o Crypt::SSLeay....................ok (v0.73_06)
  o CryptX...........................ok (v0.061)
  o Date::Format.....................ok (v2.24)
  o DateTime.........................ok (v1.50)
  o DBI..............................ok (v1.641)
  o DBD::mysql.......................ok (v4.046)
  o DBD::ODBC........................Not installed!  Use: 'apt-get install -y libdbd-odbc-perl' (optional - Required to connect to a MS-SQL database.)
  o DBD::Oracle......................Not installed!  Use: 'cpan DBD::Oracle' (optional - Required to connect to a Oracle database.)
  o DBD::Pg..........................Not installed!  Use: 'apt-get install -y libdbd-pg-perl' (optional - Required to connect to a PostgreSQL database.)
  o Digest::SHA......................ok (v5.96)
  o Encode::HanExtra.................ok (v0.23)
  o EV...............................ok (v4.22)
  o IO::Socket::SSL..................ok (v2.060)
  o JSON::XS.........................ok (v3.04)
  o List::Util::XS...................ok (v1.46_02)
  o LWP::UserAgent...................ok (v6.35)
  o Mail::IMAPClient.................ok (v3.39)
    o Authen::SASL...................ok (v2.16)
    o Authen::NTLM...................ok (v1.09)
  o Moose............................ok (v2.2011)
  o Net::DNS.........................ok (v1.17)
  o Net::LDAP........................ok (v0.65)
  o Search::Elasticsearch............ok (v6.00)
  o Specio...........................ok (v0.42)
  o Specio::Subs.....................ok (v0.42)
  o Template.........................ok (v2.27)
  o Template::Stash::XS..............ok (undef)
  o Text::CSV_XS.....................ok (v1.36)
  o Time::HiRes......................ok (v1.9741)
  o XML::LibXML......................ok (v2.0132)
  o XML::LibXSLT.....................ok (v1.96)
  o XML::Parser......................ok (v2.44)
  o YAML::XS.........................ok (v0.74)

Checking for External Programs:
  o GnuPG............................ok (v2.2.8)
  o npm..............................ok (v5.8.0)
    o Node.js........................ok (v8.11.4)
  o OpenSSL..........................ok (v1.1.1/OpenSSL)

硬件要求

硬件要求高度依赖于 OTRS 的使用情况。 OTRS 可用于每月处理几张工单或每天处理数百张工单。 存储要求还取决于工单数量和附件大小。

我们推荐使用如下配置的计算机：

AMD锐龙7 3700X Octa核心或同级别的 CPU

64GB 内存

2×1 TB NVMe SSD（软件RAID 1）

千兆网卡

软件要求

Perl

Perl 5.16.0 或更高版本

控制台命令 /opt/otrs/bin/otrs.CheckEnvironment.pl 列出的 Perl 包

Web 服务器

Apache2

nginx

可以用作反向代理的任何其他 Web 服务器

数据库

MySQL 5.7 或更高版本

MariaDB 10.2 或更高版本

PostgreSQL 9.2 或更高版本

Oraclr 10g 或更高版本

注解

OTRS 9 will not support Oracle as application database anymore.

其它依赖

Elasticsearch from version 6.5.x to 7.x (higher versions are not supported)

Elasticsearch模块“analysis-icu”和“ingest-attachment”

Search::Elasticsearch and Search::Elasticsearch::Client::6_0 (must have equal Perl package versions)

Node.js 8.9 或更高版本

浏览器

Apple Safari 7 或更高版本

Google Chrome

Microsoft Internet Explorer 11

Microsoft Edge

Mozilla Firefox 32 或更高版本

其他支持 JavaScript 的任何现代 Web 浏览器

注解

OTRS 9 将不再支持IE浏览器。

OTRS Offers an Ideal Solution for Companies of Any Size Learn more

安装

注解

OTRS is installed by the Customer Solution Team. Please contact the Customer Solution Team via support@otrs.com or in the OTRS Portal.

OTRS Offers an Ideal Solution for Companies of Any Size Learn more

更新

注解

强烈建议在一台独立的测试主机上先进行升级测试。

从 OTRS 8 的早期版本更新

你可以直接从任何的先前版本升级到最新的补丁级别版本。

从 OTRS 7 更新

您可以从 OTRS 7 的任何补丁级别版本更新到 OTRS 8 最新的可用补丁级别版本。

从 OTRS 6 或更早版本更新

您不能从 OTRS 6 或更早版本直接更新到 OTRS 8。必须依次对所有可用的次级版本进行完全更新。 例如，如果您从 OTRS 5 开始，则首先必须完整更新到 OTRS 6，然后更新到 OTRS 7，最后更新到 OTRS 8。

参见

有关更新说明，请参阅以前版本的 OTRS 管理员手册。

第1步：停止所有相关服务和 OTRS 守护进程

请确保没有任何运行中的服务或 CRON 计划任务还在试图访问 OTRS，这取决于你的服务配置和 OTRS 版本。

root> systemctl stop postfix
root> systemctl stop apache2
root> systemctl stop otrs-daemon
root> systemctl stop otrs-webserver

第2步：备份文件和数据库

创建下列文件和目录的备份：

Kernel/Config.pm

Kernel/Config/Files/User/*.pm

Kernel/WebApp.conf

var/*

当然还有数据库

警告

如果没有完整的系统备份，请不要继续。 使用 备份 脚本。

第3步：安装新版本

你可以下载 otrs-x.y.z.tar.gz 或 otrs-x.y.z.tar.bz2。 将源存档（例如，使用 tar）解压到目录 /opt 中，并创建一个符号链接 /opt/otrs，指向 /opt/otrs-x.y.z。 不要忘记 替换版本号！

注解

默认情况下，某些系统中未安装 bzip2 包。 确保在解压 otrs-x.y.z.tar.bz2 之前安装了 bzip2。

otrs-x.y.z.tar.gz 的解压命令：

root> tar -xzf otrs-x.y.z.tar.gz -C /opt

otrs-x.y.z.tar.bz2 的解压命令：

root> tar -xjf otrs-x.y.z.tar.bz2 -C /opt

建议创建一个名为 /opt/otrs 的符号链接，它始终指向最新的OTRS版本。 使用符号链接可以轻松管理OTRS更新，因为您可以保留先前版本的目录，只需要更改符号链接。 如果需要回退更新，改回符号链接的目标为原目录即可。

执行此命令以创建符号链接：

root> ln -fns /opt/otrs-x.y.z /opt/otrs

恢复原配置文件

Kernel/Config.pm

Kernel/Config/Files/User/*.pm

Kernel/WebApp.conf

恢复信件数据

如果您将 OTRS 配置为在文件系统中存储信件数据，则必须将 article 目录恢复到 /opt/otrs/var/ 或系统配置中指定的目录。

恢复已安装的默认统计

如果您有其它具有默认统计信息的软件包，则必须将带有后缀 *.installed 的统计信息 XML 文件恢复到 /opt/otrs/var/stats。

root> cd OTRS-BACKUP/var/stats
root> cp *.installed /opt/otrs/var/stats

设置文件权限

请执行以下命令为 OTRS 设置文件和目录权限。它将尝试检测你的安装所需的正确的用户和组设置。

root> /opt/otrs/bin/otrs.SetPermissions.pl

安装必需的程序和 Perl 模块

使用以下脚本可以得到所有已安装的和必需的 CPAN 模块及其它外部依赖项的概览。

root> perl /opt/otrs/bin/otrs.CheckEnvironment.pl
Checking for Perl Modules:
  o Archive::Tar.....................ok (v1.90)
  o Archive::Zip.....................ok (v1.37)
  o Crypt::Eksblowfish::Bcrypt.......ok (v0.009)
...

注解

请注意：OTRS 需要一个能工作的、安装了所有 核心 模块的 Perl。这些模块不在脚本的检查范围，在某些系统上（如 RHEL ）默认没有安装这些核心模块，你可能需要安装一个 perl-core 软件包。

要安装必需和可选的软件包，可以使用 CPAN 或 Linux 发行版的软件包管理器。

执行此命令以获取用于安装缺少的依赖项的安装命令：

root> /opt/otrs/bin/otrs.CheckEnvironment.pl --list

OTRS requires a supported stable version of Node.js to be installed. Please refer to the Node.js installation instructions.

Setup Elasticsearch Cluster

OTRS requires an active cluster of Elasticsearch. The easiest way is to setup Elasticsearch on the same host as OTRS and binding it to its default port. With that, no further configuration in OTRS is needed. For more information read the Set up Elasticsearch chapter in the official documentation.

参见

Please refer to the 硬件和软件要求 chapter for the supported versions.

此外，OTRS 需要在 Elasticsearch 中安装以下插件：

root> /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch ingest-attachment
root> /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch analysis-icu

注解

之后重新启动 Elasticsearch，否则将无法构建索引。

要验证 Elasticsearch 安装，可以使用以下命令：

otrs> /opt/otrs/bin/otrs.Console.pl Maint::DocumentSearch::Check
Trying to connect to cluster...
  Connection successful.

第4步：运行迁移脚本

迁移脚本将对你的系统执行许多检查，并提供有关如何安装缺少的 Perl 模块等的建议（如果是必需的模块）。 如果所有检查成功，将执行必要的迁移步骤。 如果是补丁级别更新，也请运行此脚本。

运行这个迁移脚本：

otrs> /opt/otrs/scripts/DBUpdate-to-8.pl

警告

如果此脚本无法正常工作，请不要继续升级过程。 否则可能会发生故障或丢失数据。

迁移脚本还会检查 ACL 和系统配置设置是否正确。 如果系统配置设置无效，脚本将为您提供通过从可能值列表中进行选择来修复它的机会。 如果脚本以非交互模式运行，它将尝试自动修复无效设置。 如果此操作失败，将要求您在迁移后手动更新设置。

如果存在过期的 ACL，系统将无法自动修复它们，并且需要由管理员进行更正。 有关详细信息，请参阅手动更改的最后一步。

第5步：更新已安装的软件包

注解

OTRS 7 的软件包与 OTRS 8 不兼容，必须进行更新。

你可以使用下面的命令来更新所有已安装的软件包。 这适用于从在线存储库提供的所有软件包。 您稍后可以通过软件包管理器更新其他软件包（这需要 OTRS 守护进程在运行）。

otrs> /opt/otrs/bin/otrs.Console.pl Admin::Package::UpgradeAll

第6步：启动服务

之后，可以启动服务。 这取决于您的服务配置，这是一个示例：

root> systemctl start postfix
root> systemctl start apache2

注解

OTRS 守护进程是正确操作 OTRS 所必需的，例如发送电子邮件。 请按照下一步中的说明激活它。

第7步：启动 OTRS 守护进程和 Web 服务器

OTRS 附带了 systemd 示例配置文件，可用于确保在系统启动后自动启动 OTRS 守护进程和 Web 服务器。

root> cd /opt/otrs/scripts/systemd
root> for UNIT in *.service; do cp -vf $UNIT /usr/lib/systemd/system/; systemctl enable $UNIT; done
root> systemctl start otrs-daemon
root> systemctl start otrs-webserver

现有你可以登录到系统了。

第8步：手动迁移任务和更改

警告

只有从 OTRS 7 的大版本更新才需要此步骤。

OTRS 8 支持全新的服务人员以及客户用户的默认密码政策。密码政策的具体规则可以在系统配置（“PreferencesGroups###Password”和“CustomerPersonalPreferences###Password”）中更改。

密码政策规则

默认

PasswordMinSize

8

PasswordMin2Lower2UpperCharacters

是

PasswordNeedDigit

是

PasswordHistory

10

PasswordTTL

30天

PasswordWarnBeforeExpiry

5天

PasswordChangeAfterFirstLogin

是

也可以对服务人员或客户用户添加密码政策豁免。详情请查看以下配置选项：

PasswordPolicy::ExceptAgentPasswordComplexity

PasswordPolicy::ExceptAgentPasswordTTL

PasswordPolicy::ExceptAgentPasswordHistory

PasswordPolicy::ExceptAgentPasswordChangeAfterFirstLogin

PasswordPolicy::ExceptCustomerPasswordComplexity

PasswordPolicy::ExceptCustomerPasswordTTL

PasswordPolicy::ExceptCustomerPasswordHistory

PasswordPolicy::ExceptCustomerPasswordChangeAfterFirstLogin

Since the old agent interface screens are no longer present, some ACLs need to be corrected manually by the administrator. The migration script already informed you if this is the case.

Affected ACLs are those that refer to a non-existing agent interface screen in their Action setting. This front end Action rule needs to be replaced with a corresponding Endpoint rule. A table with possible mapping is included below.

操作

端点

AgentAppointmentCalendarOverview

No replacement (feature dropped)

AgentLinkObject

No replacement (feature dropped)

AgentSplitSelection

AgentFrontend::TicketArticle::Action::Split

AgentTicketBounce

AgentFrontend::TicketArticle::Action::Redirect

AgentTicketBulk

AgentFrontend::TicketList::Bulk

AgentTicketClose

AgentFrontend::Ticket::Action::Close

AgentTicketCompose

AgentFrontend::TicketArticle::Action::Reply

AgentFrontend::TicketArticle::Action::ReplyAll

AgentTicketCustomer

AgentFrontend::Ticket::Action::Customer

AgentTicketEmail

AgentFrontend::TicketCreate::Email

AgentTicketEmailOutbound

AgentFrontend::Ticket::Action::EmailOutbound

AgentTicketEmailResend

No replacement (feature dropped)

AgentTicketForward

AgentFrontend::TicketArticle::Action::Forward

AgentTicketFreeText

AgentFrontend::Ticket::Action::FreeText

AgentTicketHistory

AgentFrontend::Ticket::Action::TicketHistory

AgentTicketLink

AgentFrontend::Ticket::Action::Link

AgentTicketLock

AgentFrontend::Ticket::Action::Lock

AgentFrontend::Ticket::Action::Unlock

AgentTicketMerge

AgentFrontend::Ticket::Action::Merge

AgentTicketMove

AgentFrontend::Ticket::Action::Move

AgentTicketNote

AgentFrontend::Ticket::Action::Note

AgentFrontend::TicketArticle::Action::ReplyToNote

AgentTicketOwner

AgentFrontend::Ticket::Action::Owner

AgentTicketPending

AgentFrontend::Ticket::Action::Pending

AgentTicketPhone

AgentFrontend::TicketCreate::Phone

AgentTicketPhoneInbound

AgentFrontend::Ticket::Action::PhoneCallInbound

AgentTicketPhoneOutbound

AgentFrontend::Ticket::Action::PhoneCallOutbound

AgentTicketPlain

AgentFrontend::TicketArticle::Action::Plain

AgentTicketPrint

AgentFrontend::Ticket::Action::Print

AgentFrontend::TicketArticle::Action::Print

AgentTicketPriority

AgentFrontend::Ticket::Action::Priority

AgentTicketProcess

AgentFrontend::TicketCreate::Process

AgentFrontend::ProcessTicketNextStep

AgentTicketResponsible

AgentFrontend::Ticket::Action::Responsible

AgentTicketSearch

No replacement (feature dropped)

AgentTicketWatcher

AgentFrontend::Ticket::Action::Watch

AgentFrontend::Ticket::Action::Unwatch

AgentTicketZoom

AgentFrontend::TicketDetailView

AgentFrontend::TicketDetailView::Property

建议：对您的MySQL数据库进行转码

OTRS 7 以及更早的版本只支持“utf8”作为MySQL数据库的字符集编码，但是它不能存储所有的Unicode字符。自OTRS 8 起，也支持“utf8mb4”字符集了，并且没有上述限制。为了方便，建议您用OTRS内置转换脚本将您的数据库进行转码。

如果运行该转换脚本并且不添加任何选项指令的话，则会显示需要被转码的部分。

otrs> /opt/otrs/bin/otrs.Console.pl Maint::Database::MySQL::UTF8MB4Migration
The following tasks need to be done:
  - 1 table(s) need to be converted to 'DYNAMIC' row format
  - the database needs to be converted to 'utf8mb4'
  - 411 column(s) need to be converted to 'utf8mb4'
  - 156 table(s) need to be converted to 'utf8mb4'

您可以使用 --force 选项强制完成转换。

otrs> /opt/otrs/bin/otrs.Console.pl Maint::Database::MySQL::UTF8MB4Migration --force
...

转换完毕后，您需要在“Kernel/Config.pm”文件中做相应修改以激活“uft8mb4”支持。

$Self->{'Database::mysql::utf8mb4'} = 1;

注解

如果您不进行转换，OTRS 8 也可以在“utf8”字符集下运行。但是OTRS 9 将只支持“utf8mb4”字符集。因此，该转换迟早需要在OTRS 8 的运行周期内被执行。

Updating Elasticsearch

Elasticsearch 7.x changed some configuration settings and behaviors. A full list of changes from Elasticsearch 6.x to 7.x can be reviewed in the Elasticsearch Reference.

One of those options is explicitly interesting for OTRS, which is the maximum amount of open scroll contexts, that had a value of 1000 until the latest version of Elasticsearch 6.x and was reduced to 500 in Elasticsearch 7.x.

In normal situations, this value should not be reached, but we recommend to set this value back to 1000 with the following option, that has to be added to the configuration file elasticsearch.yml:

search.max_open_scroll_context: 1000

OTRS Offers an Ideal Solution for Companies of Any Size Learn more

备份和恢复

OTRS 具有备份和还原的内置脚本。 使用 -h 选项执行此脚本以获取更多信息。

备份

注解

要创建备份，otrs 用户需要有目标目录的写入权限。

otrs> /opt/otrs/scripts/backup.pl -h

脚本的输出结果：

Backup an OTRS system.

Usage:
 backup.pl -d /data_backup_dir [-c gzip|bzip2] [-r DAYS] [-t fullbackup|nofullbackup|dbonly]

Options:
 -d                     - Directory where the backup files should place to.
 [-c]                   - Select the compression method (gzip|bzip2). Default: gzip.
 [-r DAYS]              - Remove backups which are more than DAYS days old.
 [-t]                   - Specify which data will be saved (fullbackup|nofullbackup|dbonly). Default: fullbackup.
 [-h]                   - Display help for this command.

Help:
Using -t fullbackup saves the database and the whole OTRS home directory (except /var/tmp and cache directories).
Using -t nofullbackup saves only the database, /Kernel/Config* and /var directories.
With -t dbonly only the database will be saved.

Output:
 Config.tar.gz          - Backup of /Kernel/Config* configuration files.
 Application.tar.gz     - Backup of application file system (in case of full backup).
 VarDir.tar.gz          - Backup of /var directory (in case of no full backup).
 DataDir.tar.gz         - Backup of article files.
 DatabaseBackup.sql.gz  - Database dump.

恢复

otrs> /opt/otrs/scripts/restore.pl -h

脚本的输出结果：

Restore an OTRS system from backup.

Usage:
 restore.pl -b /data_backup/<TIME>/ -d /opt/otrs/

Options:
 -b                     - Directory of the backup files.
 -d                     - Target OTRS home directory.
 [-h]                   - Display help for this command.

OTRS Offers an Ideal Solution for Companies of Any Size Learn more

性能优化

下面是用于 OTRS 安装的性能增强技术清单，包括配置、编码、内存使用等。

工单搜索索引

OTRS 使用特殊的搜索索引对来自不同通信渠道的信件中的字段进行全文搜索。

使用这个命令生成初始索引：

otrs> /opt/otrs/bin/otrs.Console.pl Maint::Ticket::FulltextIndex --rebuild

注解

实际的信件索引通过后台的 OTRS 守护进程任务进行。 虽然刚刚添加到系统中的信件被标记为立即进行索引，但其索引可能在几分钟后才可用。

有一些选项可用于微调搜索索引：

Ticket::SearchIndex::IndexArchivedTickets

定义归档工单是否包含在搜索索引中（默认情况下未启用）。 建议在有归档工单的大型系统上保持较小的索引。 如果这个选项启用了，全文搜索将能搜索到归档的工单。

Ticket::SearchIndex::Attribute

全文索引的基本设置。

Ticket::SearchIndex::Attribute 设置

注解

运行以下命令以生成新索引：

otrs> /opt/otrs/bin/otrs.Console.pl Maint::Ticket::FulltextIndexRebuild

WordCountMax

定义用以构建索引的最大字数。 例如，只有信件正文的前1000个单词存储在信件搜索索引中。

WordLengthMin 和 WordLengthMax

用作字长边界。 只有具有这两个值之间长度的单词才会存储在信件搜索索引中。

Ticket::SearchIndex::Filters

全文索引正则表达式过滤器，用于删除部分文本。

Ticket::SearchIndex::Filters 设置

定义了三个默认过滤器：

第一个过滤器剥离特殊的字符，如： , & < > ? ” ! * | ; [ ] ( ) + $ ^ =

第二个过滤器剥离使用以下字符之一开始或结束的字词： ‘ : 。

第三个过滤器剥离不包含字符的单词：a-z, A-Z, 0-9, _

Ticket::SearchIndex::StopWords

全文索引的英语停止词，这些词将从搜索索引中移除。

Ticket::SearchIndex::StopWords###en 设置

有一些语言定义了所谓的停止词。 创建搜索索引时将跳过这些停止词。

参见

如果您的语言不在系统配置设置中，或者您想要添加更多单词，则可以将它们添加到此设置：

Ticket::SearchIndex::StopWords###Custom

文件搜索

OTRS uses Elasticsearch for its document search functionality. For a good introduction into the concepts, installation and usage of Elasticsearch, please follow the Getting started with Elasticsearch chapter in the official documentation.

堆大小

Elasticsearch 是用 Java 编写的，因此可以在任何集群节点上的 Java 虚拟机（JVM）中运行。 JVM使用称为 heap（堆） 的一部分内存，其大小可以在配置文件 jvm.options 中配置。

堆最小和最大配置默认设置为 1 GB，可以使用以下选项进行修改：

Xms1g：堆最小值为1GB。

Xmx1g：堆最大值为1GB。

如果 Xms 的值低于 Xmx，则 JVM 将在超过当前限制时调整使用的堆的大小，直到达到 Xmx 的值。 这样的大小调整导致服务暂停直到它完成，这可能降低搜索或索引动作的速度和反应性。 因此，强烈建议将它们设置为相等的值。

警告

如果超出了最大堆大小，则相关的群集节点将停止工作，甚至可能会关闭该服务。

设置的堆最大值越高，Elasticsearch 可以使用的内存越多，这也会增加 JVM 完成垃圾收集可能的暂停。 因此，建议为 Xmx 设置一个不高于物理内存 50％ 的值。

For more information and good rules of thumb about the heap size, please follow the Setting the heap size chapter in the official documentation.

磁盘分配

在服务运行期间，Elasticsearch 会检查可用磁盘空间，因此决定是否将新分片分配给相关群集节点，甚至是将分片重新定位到特定节点之外。 这种行为将由当前磁盘容量控制，可以在配置文件 elasticsearch.yml 中配置。 随附一些重要的配置，它们具有良好但可能很重要的默认值：

cluster.routing.allocation.disk.watermark.low

默认值为85％。 如果超出此限制，Elasticsearch 将不会将更多分片分配给相关的群集节点。 该节点的操作不受影响，仍然可以索引和搜索数据。

cluster.routing.allocation.disk.watermark.high

默认值为90％。 如果超出此限制，Elasticsearch 将尝试将现有分片重定位到具有足够可用空间的其它节点（如果有）。

cluster.routing.allocation.disk.watermark.flood_stage

默认值为95％。 如果超出此限制，Elasticsearch 会将所有索引的配置更新为只读索引块 index.blocks.read_only_allow_delete，其中至少有一个分片分配给相关的群集节点。 从那时起，无法将新数据索引到此类索引并限制为仅搜索和删除操作。

注解

如果超出泛洪阶段并且某些索引配置为只读模式，则 Elasticsearch 不会 自动更改此配置。 如果相关磁盘由于手动操作而再次包含足够的可用空间，则需要手动将配置更改回正常模式。

For more information about disk watermarks and disk-based shard allocation, please follow the Disk-based Shard Allocation chapter in the official documentation.

信件存储

有两种不同的后端模块可用于存储电话、电子邮件和内部信件。 使用的信件存储可以在设置 Ticket::Article::Backend::MIMEBase::ArticleStorage 中配置。

Kernel::System::Ticket::Article::Backend::MIMEBase::ArticleStorageDB

此默认模块将附件存储在数据库中。 它也适用于多个前端服务器，但在数据库中需要很多存储空间。

注解

在大型安装环境中不要使用它。

Kernel::System::Ticket::Article::Backend::MIMEBase::ArticleStorageFS

使用此模块可在本地文件系统上存储附件。 它很快，但如果您有多个前端服务器，则必须确保文件系统在服务器之间共享。 将其放在 NFS 共享上或者最好是 SAN 或类似的解决方案中。

注解

在大型安装环境中推荐使用。

您可以在运行中从一个后端切换到另一个后端。 您可以在系统配置中切换后端，然后运行此命令行实用程序将数据库中的信件放到文件系统上，反之亦然：

otrs> /opt/otrs/bin/otrs.Console.pl Admin::Article::StorageSwitch --target ArticleStorageFS

您可以使用 --target 选项指定目标后端。

注解

整个过程可能需要相当长的时间，具体取决于您拥有的信件数量以及可用的 CPU 资源和/或网络容量。

如果要在数据库中保留原有附件，可以激活系统配置选项 Ticket::Article::Backend::MIMEBase::CheckAllStorageBackends 以确保 OTRS 仍然可以找到它们。

归档工单

由于 OTRS 可以用作审核系统，删除关闭的工单可能不是一个好主意。 因此，我们实现了一个可以让您归档工单的功能。

匹配某个条件的工单可以标记为“已归档”。这些工单在使用常规的工单搜索或运行一个自动任务时无法访问。系统本身不再需要处理大量的工单，而只考虑 最近的 工单就可以了。这在大型系统中能带来巨大的性能提升。

要使用归档功能：

激活系统配置中的 Ticket::ArchiveSystem 设置。

定义一个自动任务：

在 自动任务 屏幕中点击 添加任务 按钮。

任务设置：提供归档任务的名称。

自动执行：为计划该任务选择合适的选项。

选择工单：最好只将几个月前就关闭了的处于关闭状态的工单归档。

更新/添加工单属性：设置 归档选中的工单 字段为 归档工单。

在页面底部保存该任务。

点击概览表格中的 运行该任务 链接以查看受影响的工单。

点击 运行任务 按钮。

注解

手动运行此任务最多可以修改5000个工单。

当你搜索工单时，系统默认搜索未归档的工单。

为了搜索归档的工单：

打开工单搜索屏幕。

设置 归档搜索 为 未归档工单 或 所有工单。

执行搜索。

优化 Web 服务器

OTRS 的内置 Web 服务器可以开箱即用地处理中小型安装。 当 OTRS 同时为许多用户提供服务时，可能需要调整 Web 服务器配置，比如增加工作进程的数量。

Web 服务器配置文件位于 Kernel/WebApp.conf，并且所有设置均有文档说明。 可以增加 worker 设置，以在有能力的服务器上部署更多进程，用于处理 HTTP 请求。

缓存

OTRS 在 /opt/otrs/var/tmp 中缓存了大量临时数据。 请确保它使用高性能文件系统和存储。 如果你有足够的 RAM，你也可以尝试将这个目录放在 ramdisk 上，如下所示：

otrs> /opt/otrs/bin/otrs.Console.pl Maint::Session::DeleteAll
otrs> /opt/otrs/bin/otrs.Console.pl Maint::Cache::Delete
root> mount -o size=16G -t tmpfs none /opt/otrs/var/tmp

注解

在 /etc/fstab 中添加永久性挂载点。

警告

这将是一个非永久性存储，在服务器重启时会丢失，所有的会话（如果将它们存储在文件系统中）和缓存数据都将丢失。

集群

对于非常高的负载，可能需要在多个前端服务器的集群上运行 OTRS。 这是一项复杂的任务，存在许多陷阱。 因此，OTRS 集团专门为其 托管的OTRS 环境中的集群提供支持。

OTRS Offers an Ideal Solution for Companies of Any Size Learn more

索引