【问题标题】:supervisord autorestart max tries?supervisord 自动重启最大尝试?
【发布时间】:2016-01-29 14:03:24
【问题描述】:

http://supervisord.org/configuration.html#program-x-section-values 说您可以使用 autorestart=true 在退出时重新启动,但没有说明在放弃之前如何提供最大数量的重新启动(在 startsecs 内)。有没有办法做到这一点?注意:我说的不是第一次启动,而是说程序在运行 10 天后崩溃的事件。

根据文档,自动重启不关心startretries:

autorestart 控制 supervisord 是否会自动重启程序,如果 启动成功后退出(进程在 RUNNING 状态)。

supervisord 有不同的重启机制来处理进程何时启动 正在启动(进程处于 STARTING 状态)。期间重试 进程启动由 startsecs 和 startretries 控制。

【问题讨论】:

    标签: supervisord


    【解决方案1】:

    您也应该使用 startretries,例如程序配置:

    [program:consumer_example]
    command=command example
    process_name=%(program_name)s_%(process_num)02d 
    numprocs=1                                      
    autostart=true
    autorestart=true
    startretries=10
    user=USERNAME
    

    如您所见,我使用了 10 的 startretries,当您未通知程序时,它使用默认值 (3)。

    【讨论】:

    • 你是说startretries实际上既影响启动时的重启,又影响程序启动成功后的重启并处于RUNNING状态?文档明确说“重试在进程启动期间由 startsecs 和 startretries 控制”,但在 RUNNING 期间没有任何内容。
    【解决方案2】:

    我认为你需要的是使用 startretries 参数..

    http://supervisord.org/configuration.html?highlight=startretries#program-x-section-example

    最好的问候

    【讨论】:

    • 它真的可以与自动重启一起工作吗?我阅读自动重启文档的方式,startretries(现在粘贴到我的答案中)不应该在 RUNNING 状态下产生影响。
    • 是的..我忘了谈论 startsec 参数,它允许您控制从 STARTING 到 RUNNING 状态的移动。结合 startretries 和 startsecs 我认为你可以做你想做的事。supervisord.org/…
    • 你是说一个在 10 小时后崩溃的程序会回到 STARTING 阶段吗?
    • 不,它会回到 EXITED 阶段!然后,如果配置了 autorestart,则进程应重新启动以进入 RUNNING 状态。 supervisord.org/subprocess.html#process-states
    • 任何人都知道为什么主管无法启动一个程序(工作人员)在最大尝试重新启动后将程序置于 FATAL 状态?
    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多