为什么 Bugzilla 保存我的更改很慢?

kwu*_*hak 3 email bugzilla

我已经在 CentOS 5 机器上从源代码安装了 Bugzilla 4.4.5。通过标准 CentOS 5 Apache 安装上的虚拟主机提供服务,使用 MySql 和从源安装的 Perl。

最初该系统运行良好。几周后,用户抱怨保存更改花费了非常长的时间。

[粗略] 统计数据(全部以秒为单位):

  • 最低:4.56
  • 平均:4.84
  • 最大:5.02

还有报道称,距离服务器 1,000 公里远的用户经历了长达 30 秒的延迟。

相比之下,Bugzilla 的测试站点(垃圾填埋场:https : //landfill.bugzilla.org/bugzilla-4.4-branch)有以下统计数据,尽管托管在一个世界之外:

  • 最低:1.91
  • 平均:2.335
  • 最大:2.58

与更新错误相反,查看错误很快。

MySql 统计表明数据库没有问题。

kwu*_*hak 8

问题是,不管你信不信,发送电子邮件。

Bugzilla 没有将电子邮件放入队列并在后台发送的内部方法。因此,除非专门配置,否则所有电子邮件都必须在“保存”完成之前发送。

Bugzilla确实提到了这个问题,但我只是在游戏后期才发现这个问题(并且在我开始将跟踪逻辑放入 Bugzilla 代码之后:)。管理下 | 参数 | 电子邮件:

use_mailer_queue :

在大型 Bugzilla 安装中,更新错误可能非常缓慢,因为 Bugzilla 会一次性发送所有电子邮件。如果启用此参数,Bugzilla 会将所有邮件排队,然后在后台发送。这要求您已安装某些 Perl 模块(如 checksetup.pl 列出的此功能),并且您正在运行 jobqueue.pl 守护程序(否则您的邮件将不会被发送)。这会影响 Bugzilla 发送的所有邮件,而不仅仅是错误更新。

在我看来,启用use_mailer_queue就像要求 Bugzilla 运行一个小型的 sendmail 守护进程。我选择安装 Postfix(我对它也比较熟悉),并将 Bugzilla 切换为使用机器的 sendmail(mail_delivery_method : sendmail)。新的统计数据:

  • 最小值:0.975
  • 平均:1.015
  • 最大:1.140

还收到了所有测试的电子邮件... :)