【问题标题】:How many workers per supervisor?每个主管有多少工人?
【发布时间】:2026-01-24 23:55:01
【问题描述】:

一个特定的主管进程应该监督多少个工人是否有界限?在构建有关性能和容错性的 OTP 监督树时,我一直在多次回到这个问题:

应该一个监督进程监督同一特定域的所有工人(数千),还是应该放置较少数量的监督进程(在那个主监督下)来监督工人的子集流程?

【问题讨论】:

    标签: erlang elixir erlang-otp beam


    【解决方案1】:

    主管可以管理的孩子数量没有界限或限制。这仅受系统对最大进程数的限制。还应考虑到,主管本身并不进行任何主动管理。除非它被要求做某事,否则它所做的就是坐下来等待来自其子级的exit 消息。

    应该由一个主管管理所有工人,还是应该将他们分配给一些子主管,这更像是一个架构问题。如果所有工人都是同一类型并且使用one_for_onesimple_one_for_one 策略,那么一个主管直接管理工人是最好的解决方案。如果要求更复杂,将相同类型的工人分组到一个子主管中可能会很有用,例如实施一些特殊的重启策略。

    【讨论】: