mmonit golang重启慢和状态不存在
我创建了
monit应用程序,必须在崩溃时重新启动golang站点
$cd /etc/monit/conf.d $vim checkSite 它用nohup启动程序并将其pid保存到文件: check process site with pidfile /root/go/path/to/goSite/run.pid start program = "/bin/bash -c 'cd /root/go/path/to/goSitePath; nohup ./goSite > /dev/null 2>&1 & echo $! > run.pid'" with timeout 5 seconds stop program = "/bin/kill -9 `cat /root/go/path/to/goSitePath/run.pid`" 它开始了. Process 'site' status Running monitoring status Monitored pid 29723 parent pid 1 uptime 2m children 0 memory kilobytes 8592 memory kilobytes total 8592 memory percent 0.4% memory percent total 0.4% cpu percent 0.0% cpu percent total 0.0% data collected Thu,05 Mar 2015 07:20:32 然后测试它将如何重新启动崩溃我杀死手动golang网站. 我有两个问题: >站点重新启动相当慢:虽然在配置中设置超时5秒,但需要1分钟 重启后的状态: Process 'site' status Does not exist monitoring status Monitored data collected Thu,05 Mar 2015 08:04:44 如何减少重启的时间以及如何修复网站的监控状态? 监控日志: [Mar 5 08:04:44] error : 'site' process is not running [Mar 5 08:04:44] info : 'site' trying to restart [Mar 5 08:04:44] info : 'site' start: /bin/bash [Mar 5 08:06:44] info : 'site' process is running with pid 31479 更新 我的golang网站相当简单: package main import ( "fmt" "github.com/go-martini/martini" ) func main() { m := martini.Classic() m.Get("/",func() { fmt.Println("main page") }) m.Run() } 更新2 我试图通过删除pid文件本身来提高monit重新加载golang网站的速度.说我杀了29723&& rm run.pid并打开计时器,以便再次访问站点的计数时间.花了85秒.所以删除pid文件并没有帮助monit提高重新加载网站的速度.
monit没有任何订阅机制来中等地发现进程是否已经死亡.
在daemon mode中,如文档所示,monit通过定期轮询所有已配置规则的状态来工作,其守护周期在守护程序启动时配置,并且在某些Linux发行版中默认为2分钟,这意味着在这种情况下,monit可能需要直到2分钟采取任何行动. 在你的monitrc中检查这个配置,它是用set daemon指令配置的,例如,如果要每5秒检查一次状态,那么你应该设置: set daemon 5 在每个周期,它都会更新其状态,并根据需要执行操作.因此,如果它检测到该进程不存在,它将报告在下一个轮询周期之前不存在,即使它已经采取决策重新启动它. 启动守护程序指令中的超时与此轮询周期没有任何关系,这是monit将启动服务的时间.如果此时服务未启动,monit将报告该服务. 如果monit不符合您的要求,您也可以尝试supervisord,它始终了解已执行程序的状态. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |