首页 > 解决方案 > 用 Elixir 代替 sidekiq 工作:我如何了解并发性?

问题描述

我有两名工人目前正在处理成千上万个工作的高峰,这些工作基本上相当于“打开一个 telnet 连接,发送一些数据,读取一些数据,关闭”

我一直在探索 Elixir,我正在重建一个我知道并理解的应用程序。

我怎样才能找出我可以同时启动多少个同时的“工作”(想想:elixir 函数返回一个布尔值)?

事实上,在 Ubuntu 上可能有多少个开放端口?

标签: rubyelixirsidekiq

解决方案


你可以在Erlang Efficiency Guide中找到一些数字。

具体来说,

同时活跃的 Erlang 进程的最大数量默认为 262,144。可以在启动时配置此限制。有关详细信息,请参阅 ERTS 的 erl(1) 手册页中的 +P 命令行标志。

默认情况下,同时打开的 Erlang 端口的最大数量通常是 16,384。可以在启动时配置此限制。有关详细信息,请参阅 ERTS 的 erl(1) 手册页中的 +Q 命令行标志。

当然,根据您的系统设计,这些数字可能并不直接相关。正如@Justin Wood 提到的,您应该有某种任务管道。

另外,看看exq,它是 Elixir 的作业处理库,与 Sidekiq 兼容。它可能会使您的实现更简单。


推荐阅读