已主管定期重新启动子进程

2022-08-30 13:21:34

我在 ubuntu 12.04 上使用 Supervisor (3.0a12) 来管理 php gearman worker。有时,工人们陷入一种奇怪的状态,他们使用大量的CPU和RAM。当我弄清楚这个问题时,我认为让主管偶尔自动杀死和刷新工人会很好。我查看了 http://supervisord.org/configuration.html 配置文档,似乎没有看到任何允许这样做的选项。

有谁知道是否有可能让主管定期重新启动它所管理的所有流程?


答案 1

您可以使用 crontab 将命令直接传递给 supervisorctl。例如,以下内容将每 20 分钟重新启动一个进程。

0,20,40 * * * * /path/to/supervisorctl restart [supervisor_process]

答案 2

Superlance软件包为主管提供了一个memmon插件。 监视受主管控制的程序的内存使用情况。memmon

您可以配置为主管事件列表程序:memmon

[eventlistener:memmon]
command=memmon -a 200MB
events=TICK_60

上述配置将 memmon 设置为在超过 200MB 内存使用量时重新启动受主管控制下的任何程序。它每 60 秒检查一次。

您可以将 memmon 配置为监视特定的程序或程序组,并为每个程序或程序组设置限制。


推荐