我有一个基于以下描述的邮件过滤系统:http://www200.pair.com/mecham/spam/(Debian Lenny、postfix / amavisd-new / spamassassin / policy-weightd 等)
在过去的几年里,这个系统一直运行顺利(首先在 Etch 上,然后在 Lenny 发布后重建)
然后在过去的一周里,amavisd-new 进程一直处于锁定状态:
- 仍有 amavid 进程正在运行 - 所有进程都标有“(accept)”,而不是“(avail)”
- 我仍然可以与 amavis 端口建立 telnet 连接,但它一直处于连接状态,没有响应
- 运行 amavisd-nanny 锁定了我的 ssh 会话,我不得不中止并启动一个新的 ssh 会话。
- 奇怪的日志条目“amavis[25474]: (25474-20) 请求在 20 个任务后停止进程”似乎发生在进程在“(接受)”状态冻结之前。
- 这发生在我们两个(几乎相同的)邮件过滤器上,同时开始(大约在下面提到的 libaprutil1 升级时)
我自己还没有发现太多问题,想知道这里是否有人遇到了同样的问题?
有人能给我指出正确的方向吗?
答案1
amavisd-new 的“较新”版本会随着时间的推移而出现问题。我大约每 5-6 个月就会遇到一次这种情况。我还没有直接追踪这个问题,但它似乎是 RHEL/CentOS(我正在运行的版本)附带的 perl 安装的问题。
我可以告诉你,你需要将子进程的生命周期调低一些,比如每次运行 10-30 次,因为这似乎可以减轻最坏的影响。垃圾邮件风暴似乎还会给进程带来一些麻烦,在负载过大的情况下,会导致一些子进程死亡。
我希望我能告诉你更多,但我只能告诉你这么多。哦,你更新模块时使用的是 CPAN 之外的方式吗?在 Debian 上,我相信这样做是可以正常工作的,但在 RHEL/CentOS 上,这种情况已经记录了一段时间,并造成了各种麻烦。如果其他方法都失败了,请在 CPAN 中更新最新版本的 spamassassin,这在过去也缓解了一些问题。
更新:
这官方的页面上提到了几个问题,包括 Net::Server 与新版本之间的一些不兼容性。由于我没有任何版本号可供参考,我建议您 (a) 从 rpm -q 获取您正在使用的 amavis 版本 (b) 使用 CPAN 确定您正在运行的 Net::Server 版本。
答案2
我想我找到了解决方案:
本质上,pyzor 服务器 IP 地址已更改pyzor ping
。可以通过运行和su amavis -c 'pyzor ping'
获取每个的超时来确认这一点。
可以通过运行并设置定期的 cron 作业来运行此命令来解决这个问题pyzor discover; su amavis -c 'pyzor discover'
(以防将来再次发生变化)
自从我做了这个改变之后,amavisd 就不再“干扰”我了。