Monit在复位后不会接受httpd进程

我在运行CentOS 5的一台服务器上安装了Munin和Monit。除了重启httpd进程时,一切正常,logging和报告信息。 我有Monit设置为重新启动httpd,如果它达到2.5GB的内存使用量。 如果/发生这种情况,它会重新启动,但Monit不会拿起新的进程。

我会得到一个通知告诉我,httpd服务不存在,然后另一个告诉我httpd无法启动,然后最后一个说,httpd服务超时,不会再被监控

我不知道为什么我得到这些报告,因为httpd服务重新启动就好了。 我已经检查了日志,没有重新启动的问题。

也许有监视重新启动httpd的脚本,等待几秒钟,然后重新启动监视

这可能是monit以某种方式被locking到与被杀死的httpd进程关联的特定进程ID – 这将允许它正确地检测到新进程。

我不确定你的系统在2.5Gb的使用点上有多less空闲的内存,但是如果这个数量太低(可能在重新启动的时候),linux会随机启动进程以避免造成系统崩溃。 我猜测oomkiller可能会杀死monit的function必不可less的东西。

如果是这种情况, 将重启阈值从2.5Gb 降低到2.0Gb,或增加内存的数量将是一个更好的解决scheme。

可能是一个竞争条件的问题。 Monit的重启生成了“httpd stop”,然后是“httpd start”。 这不是一个primefaces操作。 “httpd stop”和“httpd start”之间的指令交织发生。

“rm -rf pid文件”最后可以完成。 Monit不会拿起httpd进程。

这是因为Monit是球。 检测服务的实际状态一直存在问题。 我不知道为什么,但是我前段时间放弃了monit,转而采取替代方式去做那些monit试图做的事情,取得了巨大的成功,而不仅仅是一点幸福。