我的服务器每隔几个月就会遇到一次这个问题:
- 应用程序对用户不可用
- 应用程序日志填充了 100% 的磁盘空间,并显示一条错误消息,提示无法连接到本地套接字来发送电子邮件。
- postfix 没有运行。
- 我在日志中没有看到任何表明 postfix 死亡原因的信息。
我的服务器是原装的 Ubuntu 12.04 + 稳定的 Python 应用程序,全天候运行 + 每日 cron 备份。
我确实在 dmesg 中看到了这一点,但不确定它是否相关(也不确定日期是否是 12 月...):
[Sun Dec 1 02:13:10 2013] OOM killed process 561 (named) vm:87916kB, rss:92kB, swap:12680kB
[Sun Dec 1 02:13:10 2013] OOM killed process 229 (upstart-udev-br) vm:2784kB, rss:4kB, swap:172kB
[Sun Dec 1 02:13:10 2013] OOM killed process 337 (upstart-socket-) vm:2796kB, rss:148kB, swap:68kB
[Sun Dec 1 02:13:10 2013] OOM killed process 671 (master) vm:4528kB, rss:152kB, swap:148kB
[Sun Dec 1 02:13:10 2013] OOM killed process 679 (qmgr) vm:4688kB, rss:204kB, swap:180kB
看起来 master 和 qmgr 是 postfix 进程....
root 16747 1 0 07:22 ? 00:00:00 /usr/lib/postfix/master
postfix 16748 16747 0 07:22 ? 00:00:00 pickup -l -t fifo -u -c
postfix 16749 16747 0 07:22 ? 00:00:00 qmgr -l -t fifo -u
我对服务器管理不太有经验,所以我需要一些帮助来确定问题所在。这与内存 (RAM) 有关吗?不可否认,Python 应用程序运行时内存消耗非常高 (95%+)。
答案1
答案2
正如 Petter H 在他的回答,OOM 终止程序已终止qmgr
进程。不幸的是qmgr
是 Postfix 邮件传递的核心。当你杀死一颗心时,你就杀死了拥有它的人。
Postfix 维护qmgr 进程作为持久的。它不应该死,除非主进程告诉它,也许是为了重新加载配置。如果qmgr
没有 就死了master
,那么 postfix 将失去它的心脏。它可以恢复然后自杀。