【问题标题】:What happens after all children of a supervisor die?主管的所有孩子都死后会发生什么?
【发布时间】:2019-05-26 18:47:04
【问题描述】:

假设主管的孩子由于某种原因不断失败。根据重新启动策略,它将重新启动失败的孩子,直到达到最大重新启动计数。 Supervisor 达到最大重启次数后会发生什么?

【问题讨论】:

    标签: erlang erlang-otp erlang-supervisor


    【解决方案1】:

    它将自行终止,其主管根据主管的策略决定是否重新启动它。如果它没有主管(它是根),则不会重新启动。这就是supervision trees 的意义所在。

    【讨论】:

      【解决方案2】:

      正如 Alexey Romanov 已经回答的那样,主管也会失败,因此父主管本身正在执行自己的策略。监管者策略必须在父监管者和子监管者之间保持一致,否则如果与子监管者相比,其重启的 MaxTime 设置不正确,父监管者可能永远不会失败。如果没有监督员,应用程序本身就会崩溃。例如,如果应用程序作为 Windows 服务运行,则该服务本身可以设置重启策略。

      例子:

      child supervisor: max restarts 10, max time: 10secs -> child supervisor 如果在 10secs 内有超过 10 次崩溃,child supervisor 将会崩溃

      父主管:最多重启次数:20,最长时间:5 秒 -> 子主管必须在 5 秒内崩溃 20 次。这也意味着子主管的孩子必须在 5 秒内崩溃 > 200 次才能使父主管崩溃

      还请查看以下内容 https://learnyousomeerlang.com/supervisors

      【讨论】:

        猜你喜欢
        • 2015-06-02
        • 2018-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-04
        • 2019-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多