最近我运行了一个下面的命令来启动守护程序进程,它在三天内运行一次。 RAILS_ENV =生产lib / daemons / mailer_ctl启动,这是有效的,但是当我在一周后回来并发现该进程被杀死时。
这是正常的吗?
提前致谢。
答案 0 :(得分:0)
不。据我所知,这个守护进程应该运行直到你杀死它。这个想法是让它按常规间隔工作,对吧?所以守护进程应该醒来,做它的工作,然后再回去睡觉直到需要。所以,如果它被杀死,这是不正常的。
问题是为什么它被杀了,你能做些什么呢。第一个问题是调试分离进程时最难回答的问题之一。除非您的守护程序在日志中留下一些线索,否则您可能无法找到终止的时间和原因。如果你查看你的日志(如果你很幸运的话)可能会有一些线索 - 我会在你怀疑它最后一次运行的时候开始看看你的Rails production.log,守护进程可能有的任何日志文件创建,但也在系统日志。
让我们假设你永远无法弄清楚这个守护进程发生了什么。怎么办它成为一个有趣的问题。第一步是:尽可能多地记录,而不会使日志过于庞大或影响性能。至少记录唤醒,处理和完成事件,以及捕获信号并记录它们。最好登录到Rails production.log以外的其他地方。您可能还希望以比3天更短的间隔运行守护程序,直到您确定它是稳定的。
使用monit(http://mmonit.com/monit/)或god(http://god.rubyforge.org/)等流程监控工具。这些工具可以“监视”守护进程的状态,如果它们没有运行,则可以自动启动它们。你仍然需要弄清楚他们被杀的原因,但至少你有一些安全网。