【发布时间】:2012-08-31 18:12:40
【问题描述】:
我能否修改 montrc 使其不会立即重新启动进程。在触发重新启动之前,该过程必须关闭一个完整的周期。这样我就可以保留现有的 capistrano 部署。
【问题讨论】:
标签: monit
我能否修改 montrc 使其不会立即重新启动进程。在触发重新启动之前,该过程必须关闭一个完整的周期。这样我就可以保留现有的 capistrano 部署。
【问题讨论】:
标签: monit
你可以使用类似的东西:
check process x with pidfile /var/run/x.pid
every y cycles
或
start program = "/etc/init.d/x start" with timeout 90 seconds
【讨论】:
with timeout 的 Monit 文档:在进程检查的情况下,Monit 将等待长达 30 秒的启动/停止放弃之前完成的操作并报告错误。您可以使用 TIMEOUT 选项或全局使用设置的限制来覆盖此超时。 我认为这是允许的开始时间,而不是停止和下一次开始之间的间隔。
如果您只监控 PID 文件,我认为目前无法做到这一点。但是,如果您还通过侦听端口来监视服务,则可以添加if failed port 8080 X times within Y cycles then restart 子句。然后,Monit 会在每个周期卷曲该端口,当失败次数在 Y 个周期内达到 X 时,它将尝试重新启动服务。
请记住,这只会影响端口监视器。如果 monit 发现 PID 文件消失了,它会立即尝试重新启动它。
【讨论】:
试试
check process x with pidfile /var/run/x.pid
if does not exist for 2 cycles then start
这将至少等待 1 个完整周期,然后重新启动死进程。
【讨论】: