我有这样的monitconfiguration:
check process unicorn with pidfile /tmp/pids/unicorn.0.pid start program = "/etc/init.d/unicorn start" stop program = "/etc/init.d/unicorn stop" restart program = "/etc/init.d/unicorn reload" if mem is greater than 250.0 MB for 2 cycles then restart if cpu is greater than 22% for 3 cycles then alert if cpu is greater than 25% for 2 cycles then restart
但看起来每当monit尝试重新加载应用程序(例如由于内存> 250MB),它会发出停止然后启动,而不是使用重新启动程序。 有没有办法告诉monit运行重启呢? 由于发布停止并开始导致网站停下来一段时间。
我看到了与您所报告的相同的问题。 我不知道为什么'重启程序'没有用来重启。 不过,我使用的解决方法是这样的:
check process unicorn with pidfile /tmp/pids/unicorn.0.pid start program = "/etc/init.d/unicorn start" stop program = "/etc/init.d/unicorn stop" if mem is greater than 250.0 MB for 2 cycles then restart if cpu is greater than 22% for 3 cycles then alert if cpu is greater than 25% for 2 cycles then exec "/etc/init.d/unicorn reload"
请注意,我离开了'如果内存'检查,以便它将停止/启动。 这是因为我认为如果你有内存泄漏,重装可能不会有帮助,因此可能需要停止/启动。 但是,如果你觉得合适,就调整一下吧。
没有深入挖掘monit源代码并修复它(或者安装更新的版本,并查明它是否已经修复),这可能是您最好的select。
您正在使用哪个版本的monit?
你重新启动的语法看起来合法
你检查了networking界面,以确保configurationparsing参加?
文档状态
RESTART重新启动服务并发送警报。 通过调用服务的注册重启方法,或者如果没有设置重启,首先调用stop方法,然后再调用start方法来执行重启。
Monit用于重新启动的方法是首先执行停止程序,然后等待(最多30秒)以停止进程,然后执行启动程序并等待(30s)以使其启动。