我有一个 Nginx Web 代理、gunicorn Web 服务器和一个 python/flask Web 应用程序。Gunicorn 进程似乎已死,我希望将来能通过研究一个实用程序来改善这种情况,该实用程序可以监控 gunicorn 进程并在其再次崩溃时重新启动它。
我发现了几种可以完成这项工作的流程监督实用程序:
- 守护进程工具
- 启动
- 运行
- s6
- 导师
- 系统D
- 暴发户
- ...
是否有一篇综合性的文章来比较和对比用于监视和重新启动进程的各种实用程序?
答案1
runit
是 的继承者daemontools
(两者都写于c
)supervisord
用途python
。
我一直runit
在使用socklog
同一作者的Alpine Linux lxc
大约 10 个月来一直在使用容器来管理web
/database
和各种其他服务。它很轻便,易于管理,而且我没有遇到过任何服务故障。日志守护程序也可以以自己的用户身份运行,root
这很好。
答案2
如果您的发行版使用 Upstart,请使用它。它对作业重启提供了非常基本的支持,但包括可能阻止重启循环的限制,如 @EEAA 所述。
如果您的操作系统使用另一个 init 程序,请不要更改它。我无法真正帮助您使用您提到的其他工具,因为我通常使用 Upstart 仍然存在的 Ubuntu(截至最新的 LTS),所以我很少使用它们。但创建一个从运行的简单脚本并不困难计划任务每分钟一次(或更频繁地循环),可以检查 PID 是否存在,并在失败时发出重新启动。