ruby - 用 Elixir 代替 sidekiq 工作:我如何了解并发性?
问题描述
我有两名工人目前正在处理成千上万个工作的高峰,这些工作基本上相当于“打开一个 telnet 连接,发送一些数据,读取一些数据,关闭”
我一直在探索 Elixir,我正在重建一个我知道并理解的应用程序。
我怎样才能找出我可以同时启动多少个同时的“工作”(想想:elixir 函数返回一个布尔值)?
事实上,在 Ubuntu 上可能有多少个开放端口?
解决方案
你可以在Erlang Efficiency Guide中找到一些数字。
具体来说,
同时活跃的 Erlang 进程的最大数量默认为 262,144。可以在启动时配置此限制。有关详细信息,请参阅 ERTS 的 erl(1) 手册页中的 +P 命令行标志。
和
默认情况下,同时打开的 Erlang 端口的最大数量通常是 16,384。可以在启动时配置此限制。有关详细信息,请参阅 ERTS 的 erl(1) 手册页中的 +Q 命令行标志。
当然,根据您的系统设计,这些数字可能并不直接相关。正如@Justin Wood 提到的,您应该有某种任务管道。
另外,看看exq,它是 Elixir 的作业处理库,与 Sidekiq 兼容。它可能会使您的实现更简单。
推荐阅读
- javascript - 在 Web App no-PWA 上添加本机横幅不起作用
- kubernetes - 配置 Istio Sidecar 以允许到外部主机的流量
- java - 如何在 1 个列表视图中添加多个值并为其设置适当的样式
- c++ - 自定义打开文件对话框 C++
- python - 如何使用 FeatureUnion 在同一分类任务中使用 2 个 TfidfVectorizer
- flutter - 使用来自 Provider 的异步数据更新颤振画布
- python - XRPL - 错误 - 发行带有转账费的 Fungible Token
- javascript - 展平嵌套对象打字稿
- continuous-integration - 如何使竹子任务相互依赖,如果一个出错,下一个不执行
- java - 如何在 Eclipse Milo 中获取 OPC UA 节点名称?