性能调整¶
有一系列用于OTOBO安装的性能增强技术,包括配置,编码,内存使用等。
工单索引模块¶
可以通过系统配置``Ticket :: IndexModule''设置工单索引模块,这里有两个后台模块可以为工单队列视图建立索引:
- `` Kernel::System::Ticket::IndexAccelerator::RuntimeDB ``
- 默认选项是从工单列表动态生成队列,这样在你的系统中,未解决的工单数量不超过60,000的情况下,你不会遇到性能问题。
- `` Kernel::System::Ticket::IndexAccelerator::StaticDB ``
当你有80,000张以上的工单时,应使用功能更强大的模块,它使用了额外的``ticket_index``表,该表将根据工单数据提取关键字。切换回后台,使用以下命令生成初始索引:
otobo> /opt/otobo/bin/otobo.Console.pl Maint::Ticket::QueueIndexRebuild
工单查询索引¶
OTOBO使用特殊的搜索索引,对不同通信渠道的文章中的各个字段进行全文搜索。
要创建初始索引,请使用以下命令:
otobo> /opt/otobo/bin/otobo.Console.pl Maint::Ticket::FulltextIndex --rebuild
Note
实际的文章索引是通过OTOBO守护程序在后台进行,虽然刚刚添加到系统中的文章会马上被添加初始索引标记,但可能它们的索引几分钟后才可以使用。
有一些选项可以对搜索索引进行微调:
- `` Ticket::SearchIndex::IndexArchivedTickets ``
- 确认是否将已归档的工单包括在搜索索引中(默认情况下禁用)。建议在拥有已归档工单的大型系统上,索引尽量小。如果启用此选项,将可以通过全文搜索找到已归档的工单。
- `` Ticket::SearchIndex::Attribute ``
基础全文字检索设置。
Note
运行以下命令以便生成新的索引:
otobo> /opt/otobo/bin/otobo.Console.pl Maint::Ticket::FulltextIndexRebuild
- `` WordCountMax ``
- 定义可以处理建立索引的最大单词数量,例如,文章正文中仅前1000个单词存储在文章搜索索引中。
WordLengthMin
andWordLengthMax
- 字长边界,作为文章搜索索引中上下区间数值,只有在区间数据以内的单词才会存在索引中。
- `` Ticket::SearchIndex::Filters ``
基于正则表达式的过滤器可从全文索引中排除部分原文。
定义了三个默认过滤器:
- 第一个过滤器会去除特殊字符,例如:,&<>? “!* |; []()+ $ ^ =
- 第二个过滤器会去除以以下字符之一开头或结尾的单词:':。
- 第三个过滤器会去除不包含单词字符的单词:a-z,A-Z,0-9,_
- `` Ticket::SearchIndex::StopWords ``
全文索引的英语停用词,这些单词将从搜索索引中删除。
有些语言定义了所谓的停用词。创建搜索索引时,将跳过这些停用词。
See also
如果您的语言不在系统配置设置中,或者您想添加更多单词,则可以将它们添加到此设置中:
- `` Ticket::SearchIndex::StopWords###Custom ``
文档搜索¶
OTOBO使用Elasticsearch作为其文档搜索,要对Elasticsearch的概念、安装和使用进行介绍,请遵循“入门指南<https://www.elastic.co/guide/zh-cn/elasticsearch/reference/current/getting-started.html>” __ 。
堆尺寸¶
Elasticsearch用Java编写,可以在任何群集节点上的Java虚拟机(JVM)中运行。这样的JVM使用一部分内存,称为*堆*,其大小可以在配置文件``jvm.options''中进行配置。
默认情况下,堆的最小和最大配置设置为1 GB,可以使用以下选项进行修改:
Xms1g
:最小堆尺寸。Xmx1g
: maximum heap size.
如果``Xms''的值比``Xmx''的值低,那么只要超过当前限制,JVM就会调整已使用堆的大小,直到达到``Xmx''的值为止。这种调整大小会导致服务暂停直到完成为止,这可能会降低搜索或索引操作的速度和反应性。因此,强烈建议将这些配置设置为相等的值。
Warning
如果超过了堆大小的最大值,则相关的群集节点将停止工作,甚至可能关闭服务。
堆最大值设置得越高,Elasticsearch可以使用更多的内存,这也增加了JVM进行垃圾收集的可能暂停。因此建议为``Xmx''设置一个不大于物理内存50%的值。
有关更多信息和有关堆大小的良好经验法则,请遵循`官方文档 <https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html>`__。
磁盘分配¶
在服务运行期间,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”,其中至少一个分片分配给相关的集群节点。从那时起,就不可能将新数据编入此类索引,并且无法进行搜索和删除操作。
更新后,就无法再将新数据索引到此类索引中。索引仅限于搜索和删除操作。
Note
如果超出了洪水阶段,并且某些索引被配置为只读模式,则这种配置*不会*被Elasticsearch自动更改。如果相关磁盘由于手动操作而再次包含足够的可用空间,则需要将配置手动更改回普通模式。
有关磁盘水印和基于磁盘的分片分配的更多信息,请遵循 官方文档。
物品存放¶
对于电话,电子邮件和内部物品的存储,有两个不同的后端模块。可以在``Ticket :: Article :: Backend :: MIMEBase :: ArticleStorage``中配置使用过的物品存储空间。
- `` Kernel::System::Ticket::Article::Backend::MIMEBase::ArticleStorageDB ``
这个默认模块将附件存储在数据库中,还可以与多个前端服务器一起使用,但是需要很多数据库存储空间。
Note
不要将其用于大型系统。
- `` Kernel::System::Ticket::Article::Backend::MIMEBase::ArticleStorageFS ``
使用此模块可将附件存储在本地文件系统上。这样速度很快,但是如果你有多个前端服务器,则必须确保文件系统在服务器之间可以共享。可以将其放在NFS共享文件系统,当然最好放在SAN或类似解决方案上。
Note
建议用于大型系统。
您可以即时从一个后端切换到另一个。您可以在系统配置中切换后端,然后运行此命令行实用程序将物品从数据库放到文件系统上,或者以其他方式:
otobo> /opt/otobo/bin/otobo.Console.pl Admin::Article::StorageSwitch --target ArticleStorageFS
您可以使用 --target
选项指定目标后端。
Note
根据您拥有的物品数量、可用的CPU能力和/或网络容量,整个过程可能需要花费大量时间才能运行。
如果要将旧附件保留在数据库中,则可以激活系统配置选项``Ticket :: Article :: Backend :: MIMEBase :: CheckAllStorageBackends``以确保OTOBO仍然可以找到它们。
封存工单¶
由于OTOBO的数据可用作审查证据,因此删除已关闭的工单可能不是一个好主意,这项功能可让您封存工单。
符合特定条件的故障单可以标记为已存档。这样在你进行常规工单搜索或进行常规话务员工作时,不会访问这些工单。这样系统不再需要处理大量旧工单,而是仅考虑最新的工单,这可以在大型系统上获得巨大的性能提升。
要使用存档功能:
在系统配置中激活 ``Ticket::ArchiveSystem``设置。
定义通用话务员工作:
- 单击*通用话务员*屏幕中的*添加工作*按钮。
- 工作配置:为封存工作提供一个名字。
- 自动化执行:为工作的时间安排选择合适的选项。
- 选择票证:最好只归档几个月前就已经完成关闭的那些工单。
- 更新/添加工单属性:将字段*将所选工单存档*设置为*存档工单*。
- 将工作保存在页面末尾。
- 单击概述表中的*运行此任务*的链接,查看受到影响的工单。
- 点击*运行工作*按钮。
Note
手动运行这项工作最多可以修改5000张工单。
搜索工单时,系统默认只搜索未归档的工单。
要搜索已经归档的工单:
- 打款工单搜索界面。
- 将*归档搜索*设置为*未归档工单*或者*所有工单*。
- 进行搜索。
缓存¶
快速缓存模块在性能方面有很大的帮助,我们建议使用Redis Cache服务器或创建虚拟硬盘。
安装一个 Redis Cache服务器¶
- 安装Redis服务器
首先,你需要安装最新的Redis服务器。最简单的方法是在与OTOBO相同的主机上`配置Redis <https://redis.io/topics/quickstart>`__并将其绑定到其默认端口。
- 安装Redis Perl 模块或者Redis::Fast
你可以选择要使用的Redis模块:Redis`或`Redis :: Fast`(与`Redis`兼容,但**快2倍**)。请使用我们的``otobo.CheckModules.pl --list` 为您选择合适的软件包:
otobo> /opt/otobo/bin/otobo.CheckModules.pl --all
- 为Redis进行OTOBO设置
请使用OTOBO`SysConfig`(管理员->系统配置)正确配置OTOBO:
| Setting | Description | Default value |
| ----------------------------- | -------------------------- | -------------- |
| Cache::Redis###Server | Redis server URL | 127.0.0.1:6379 |
| Cache::Redis###DatabaseNumber | Number of logical database | 0 |
| Cache::Redis###RedisFast | Use or not Redis::Fast | 0 |
| Cache::Module | Activate Redis Cache Module| DB (use Redis) |
虚拟磁盘缓存¶
OTOBO在/ opt / otobo / var / tmp中缓存了许多临时数据,请确保这里使用的是高性能的文件和存储系统。如果你有足够的RAM,也可以尝试将此目录放在如下所示的虚拟磁盘上:
otobo> /opt/otobo/bin/otobo.Console.pl Maint::Session::DeleteAll
otobo> /opt/otobo/bin/otobo.Console.pl Maint::Cache::Delete
root> mount -o size=16G -t tmpfs none /opt/otobo/var/tmp
Note
在``/ etc / fstab``中添加持久挂载点。
Warning
这不是一个永久性存储,将会在服务器重启时丢失,从而你的所有会话(如果你将它们存储在文件系统中)和缓存数据都会丢失。