如何强制supervisord停止处于BACKOFF状态的进程

22
当您使用supervisord启动进程时,它处于“STARTING”状态,如果遇到问题,则会转为“BACKOFF”状态(如果设置了自动重启,则会转为该状态)。我不想等待尝试“startretries”,我想使用supervisorctl手动停止重启过程。我发现唯一的方法是停止整个supervisord服务并重新启动它(如果没有自动启动,则每个进程都处于“STOPPED”状态)。是否有更好的方法(从“BACKOFF”状态强制转换为“STOPPED”状态),因为我还在supervisord中管理其他进程,我不想停止它们?如果我尝试停止它,可以使用以下命令:
supervisorctl stop process

我明白了

FAILED: attempted to kill process with sig SIGTERM but it wasn't running

如果我尝试使用以下方式启动它:
supervisorctl start process

我明白了

process: ERROR (already started)

当然,我可以禁用自动重启功能,但这可能是有用的。一个解决方法是限制启动尝试次数,但是否有更好的解决方案呢?

2个回答

2

嘿,这可能对你有帮助:

当自动重启的进程处于BACKOFF状态时,它将由supervisord自动重新启动。它将在STARTINGBACKOFF状态之间切换,直到明显无法启动为止,因为启动尝试次数已超过最大值,此时它将转换为FATAL状态。每个启动重试将需要更长的时间。

所以你不需要手动停止BACKOFF进程。如果你不想等待太长时间,最好将startretries设置为一个较小的数字。

在这里查看更多信息:http://supervisord.org/subprocess.html

祝你好运!


10
这并没有解决问题-你只是告诉他不需要做他要求的事情。“你不需要手动停止BACKOFF过程”。他想知道如何从BACKOFF状态切换到STOPPED状态,以便可以确信该进程不会重新启动。 - keen

-6
使用以下命令强制supervisor停止处于BACKOFF状态的进程。
supervisorctl stop <gname>:*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接