我在 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统计信息表明数据库没有任何问题。
答案1
不管你信不信,问题在于发送电子邮件。
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
还收到了所有测试的电子邮件...:)