Outdated documentation

You are looking at the documentation for an older release. For the latest information, please see current release documentation.

性能优化

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

工单索引模块

可以在系统配置设置 Ticket::IndexModule 中设置工单索引模块。 工单队列视图的索引有两个后端模块:

Kernel::System::Ticket::IndexAccelerator::RuntimeDB
这是默认选项,并将从工单表中即时生成每个队列视图。 在有6万个处理工单之前,系统都不会遇到性能问题。
Kernel::System::Ticket::IndexAccelerator::StaticDB

当您有超过80,000个处理中的工单时,应该使用这个最强大的模块。 它使用一个额外的 ticket_index 表,用基于工单数据的关键字填充。 在切换后端模块后使用下列命令生成初始索引:

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

工单搜索索引

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

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

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

注解

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

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

Ticket::SearchIndex::Attribute

全文索引的基本设置。

``Ticket::SearchIndex::Attribute`` Setting

Ticket::SearchIndex::Attribute 设置

注解

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

otrs> /opt/otrs/bin/otrs.Console.pl Maint::Ticket::FulltextIndexRebuild
WordCountMax
定义用以构建索引的最大字数。 例如,只有信件正文的前1000个单词存储在信件搜索索引中。
WordLengthMinWordLengthMax
用作字长边界。 只有具有这两个值之间长度的单词才会存储在信件搜索索引中。
Ticket::SearchIndex::Filters

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

``Ticket::SearchIndex::Filters`` Setting

Ticket::SearchIndex::Filters 设置

定义了三个默认过滤器:

  • 第一个过滤器剥离特殊的字符,如: , & < > ? ” ! * | ; [ ] ( ) + $ ^ =
  • 第二个过滤器剥离使用以下字符之一开始或结束的字词: ‘ : 。
  • 第三个过滤器剥离不包含字符的单词:a-z, A-Z, 0-9, _
Ticket::SearchIndex::StopWords

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

``Ticket::SearchIndex::StopWords###en`` Setting

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

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

参见

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

  • Ticket::SearchIndex::StopWords###Custom

信件存储

有两种不同的后端模块可用于存储电话、电子邮件和内部信件。 使用的信件存储可以在设置 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 可以用作审核系统,删除关闭的工单可能不是一个好主意。 因此,我们实现了一个可以让您归档工单的功能。

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

要使用归档功能:

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

  2. 定义一个自动任务:

    • 自动任务 屏幕中点击 添加任务 按钮。
    • 任务设置:提供归档任务的名称。
    • 自动执行:为计划该任务选择合适的选项。
    • 选择工单:最好只将几个月前就关闭了的处于关闭状态的工单归档。
    • 更新/添加工单属性:设置 归档选中的工单 字段为 归档工单
    • 在页面底部保存该任务。
    • 点击概览表格中的 运行该任务 链接以查看受影响的工单。
    • 点击 运行任务 按钮。

    注解

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

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

为了搜索归档的工单:

  1. 打开工单搜索屏幕。
  2. 设置 归档搜索未归档工单所有工单
  3. 执行搜索。

优化 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 中添加永久性挂载点。

警告

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

集群

For very high loads, it can be required to operate OTRS on a cluster of multiple front end servers. This is a complex task with many pitfalls. Therefore, OTRS Group provides support for clusters in its managed OTRS environment exclusively.

Limits of Objects

There is no technical limitation of how many objects can be used in the system but using high number of objects may affect the system performance. The proposed limits apply only to objects that are set as valid. The objects set as invalid or invalid-temporarily are not used by the system.

To keep the system fast and responsive the following limits for valid objects should not be exceeded:

  • Mail accounts: 10
  • Postmaster filters: 50
  • ACLs: 80
  • Dynamic fields: 300
  • Dynamic field dropdown or multiselect values per field: 100
  • Services: 500
  • SLAs: 50
  • Queues: 200
  • Configuration item classes: 20
  • Configuration item objects: 20,000
  • Processes: 50
  • Generic agents: 30 (frequency max once per hour per generic agent)
  • Ticket states: 20
  • Ticket types: 10
  • Appointment calendars: 50