【问题标题】:Is it possible to "run out" of Erlang process IDs?是否有可能“用完” Erlang 进程 ID?
【发布时间】:2015-02-26 06:34:50
【问题描述】:

this question 的回答说 Erlang PID 实际上是 28 位整数,其中前 10 个是节点号(本地节点始终为 0),接下来的 18 个是全局索引进程表。所以,如果我的理解是正确的,假设我们只在单个节点上工作,那么唯一 PID 的最大数量是 2^18,或大约 262,000。那么随着时间的推移,这是我可以在单个 Erlang 节点上生成的最大进程数吗?如果我有一个运行时间很长的 Erlang 节点,在我分配第 2^18+1 个节点后,VM 会立即崩溃,还是会重用旧的、未使用的 PID?如果是这样,该过程如何在 VM 级别实现?

【问题讨论】:

    标签: erlang pid


    【解决方案1】:

    另一个问题的answer 似乎指的是旧版本的 Erlang 运行时,它在 R9 之后发生了变化(目前 R17 是最新的)。根据the implementation,进程ID使用28位作为内部标识符。

    当进程死亡并通知任何监视器时,Pids 会被回收,因此 2^28 是节点上同时处理的进程数的上限。

    默认进程限制为 2^18,可以使用+P 选项将其增加到erl,请参阅erl options documentation

    注意:文档说上限是 2^27 个进程,这与代码不一致。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2011-02-04
      • 2012-08-05
      • 2011-01-25
      • 2018-07-03
      • 2012-02-11
      • 2016-07-28
      • 2013-06-08
      相关资源
      最近更新 更多