mysql - OTRS - 新电话票 - 从 AD 添加 CustomerUser (CustomerID) 缓慢

标签 mysql apache performance otrs

最近几个月,我注意到通过网络界面创建新票证的过程出现延迟。目前,将用户链接到屏幕上的工单需要大约 18 秒 http://servidor/otrs/index.pl Action = AgentTicketPhone?。当用户在列表中选择时(没有任何延迟地显示),就会出现缓慢的情况。

通过 AdminSupport 没有警报 SQL 基准测试非常出色,即使在测试生产期间(使用 28 个单个代理),所有测试都列为“看起来不错!” Ticket::SearchIndexModule 与 StaticDB 一样,并执行了“bin/otrs.RebuildFulltextIndex.pl”

身份验证链接到为大约 2000 名员工提供服务的 AD,但我们有五个域 Controller 和 Config.pm 我配置了 IP 仅使用其中一个(高性能、较少使用且位于同一网段)并使用“CacheTTL => 60 * 60 * 24”。我寻找一些 AD 字段,但我知道这并不是它们会减慢它们立即显示的速度,而是其他称为注册屏幕字段的字段保持“锁定”状态,直到完成加载“某些内容”。

我检查了 DNS,服务器内可以解析内部名称,并且不会丢失任何数据包。我不在 OTRS 服务器或域 Controller (AD) 中使用 IPV6。

使用多个电子邮件帐户,但由于所谓的电子邮件闪屏仅在创建命名后发送,因此消除了此问题。

专用服务器有 8 个处理器,在高性能虚拟化 VMWare 中具有 9GB RAM。但 S.O 目前是 32 位的。

有人对如何提高现阶段的性能有任何建议吗?有什么我可以关闭的吗?

统计数据: 代理商 87 文章 397480 每票文章数(平均)4.55 至少持有一张门票的顾客 3904 第 28 组 安装目录/opt/otrs 第一张票和最后一张票之间的月份 37.53 操作系统 linux 产品OTRS 3.3.6 角色 12 门票87428 每月门票(平均)2329.33

Apache /2.2.22 MySQL 5.5.25a 事件目录:Windows Server 2008 R2 谷歌浏览器 v47

OTRS 版本 3.3.6(带 ITSM)和 KIX4OTRS 6.0.2,操作系统 - OpenSuse 12,带 Mysql。

PS:我在 otrs 论坛上问过同样的问题,但我寻找答案太久了,所以我求助于其他论坛。

谢谢你的提示。它具有生产环境和其他批准。认证环境很快。 我只是使用下面的字段。我的房间没有森林,添加了两个过滤器(AlwaysFilter):

摘 self 的配置:

CacheTTL => 60 * 60 * 24,
        Map => [
           [ 'UserSalutation', 'Title',      'title',           1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'sAMAccountName',             1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
            [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
            [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
            [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
            [ 'UserState',    'RE',    'st',     1, 0, 'var', '', 0 ],
        ],
    };

# In case you want to add always one filter to each ldap query, use
# This option. and. g. AlwaysFilter => '(mail = *)' or AlwaysFilter => '(objectclass = user)'
$ Self -> {'Customer AuthModule :: :: LDAP :: AlwaysFilter'} = '';

# In case you want to add a suffix to each customer login name, Then
# You can use this option. and. g. user just want to use user but
# In your ldap directory exists user @ domain.
$ Self -> {'Customer AuthModule :: :: LDAP :: UserSuffix'} = '@ myexample.com.br';

DNS 正在运行,检查 MX 记录已禁用。

每个用户每天仅发生一次缓慢的情况。有什么方法可以增加缓存时间以减少 AD 中的搜索吗?

最佳答案

埃德森!

在我看来,有几件事可能会影响从自动完成中选择客户后的加载时间。

考虑到,生成下拉列表本身的第一个 AD 调用是在页面加载时进行的,因此它不应该成为瓶颈

选择后调用以下方法:

  1. AgentCustomerSearch->CustomerTickets()
  2. AgentCustomerSearch->CustomerInfo()
  3. 包含所有动态字段提交的 FormID

CustomerTickets 仅提供系统中的工单搜索(如果您从界面搜索工单并且不需要 18 秒 - 此处的情况并非如此)

CustomerInfo 通过 LDAP 协议(protocol)从 Active Directory 请求数据。如果您存储大量属性(例如 > 100 个参数或大型附件,例如 pdf 格式的描述或客户照片),此步骤可能会变得非常慢

我建议只保留 CustomerUserMap 中的主要参数(登录名、电子邮件和 CustomerID)并检查创建是否仍然那么慢。如果有帮助 - 那么您应该检查从 AD 检索的参数,否则您应该尝试限制在 AD 中浏览的树(如果您解析一个大型环境,其中用户居住在多个树中,它也可能需要时间)

限制客户的映射,编辑文件 Kernel/Config.pm 并更改 CustomerUser 对象中的映射(LDAP 设置)

    Map => [
        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
        [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
...

关于mysql - OTRS - 新电话票 - 从 AD 添加 CustomerUser (CustomerID) 缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34899857/

相关文章:

javascript - 无法使用 mongoose、Node.js 将数据插入 mongoDB 中的文档字段

php - 我正在尝试将 docker 用于带有 nginx 的 php5.6,但配置存在问题

c# - 类 VS 引用结构

Android:在调试中使用 RecyclerView 在初始滚动时出现 Jank

performance - Spark withColumn 性能

php - PHP和Mysql查询,使用PHP将行转换为列

MySql,到目前为止计算一列并将结果放在另一列中

mysql - JOIN 与 3 个表

python - 尝试登录 Django 管理页面时出现服务器错误 (500)

windows - 如何修复 "The _imaging C module is not installed"Django/WSGI/Apache