如果进程终止,如何在upstart,runit,supervisor,daemontools等之间进行选择,以重新启动进程?


13

我有Nginx Web代理,gunicorn Web服务器和python / flask Web应用程序。Gunicorn进程显然已经死了,我想在将来通过研究一种实用程序来改善这种情况,该实用程序可以监视并重新启动Gunicorn进程,以防它再次崩溃。

我发现有几个可以做到这一点:

  • 暴发户
  • 运行
  • 主管
  • 守护程序
  • 还有很多

是否有一篇综合文章比较和对比了用于监视和重新启动进程的各种实用程序?


2
您确实应该从盒子外面监视这些服务,因为这样出现进入重新启动循环并消耗服务器上所有可用资源的情况。
EEAA 2015年

编写自己的代码以完全按照所需的方式进行操作。这是一个简单的任务。
Ryan Babchishin 2015年

Answers:


3
  • runitdaemontools(均以编写c) 的后继者

  • supervisord用途python

我已经runitsocklog同一位作者在Alpine Linux lxc容器中一起使用了大约10个月,以管理web/ database和其他各种服务。它轻巧,易于管理,而且我没有出现服务故障。日志记录守护程序也以其自己的用户身份运行,而不是root很好。

voidlinux既可以runit用作init系统,也可以用于服务监督(在程序包树中搜索run文件以获取runit脚本示例)。


2

如果您的发行版使用Upstart,请选择它。它对作业重新启动具有非常基本的支持,但是包含一些限制,可以防止重新启动循环,如@EEAA所述。

如果您的操作系统使用其他初始化程序,请不要更改它。我不能用您提到的其他工具来真正帮助您,因为我通常使用仍存在Upstart的Ubuntu(从最新的LTS开始),因此与它们几乎没有关系。但是创建一个简单的脚本不是一件容易的事,该脚本每分钟从cron运行一次(或者在循环中更频繁地运行),该脚本可以检查PID是否存在并在出现故障时重新启动。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.