【问题标题】:Most efficient way to use Node.js PM2 clustering and Node.js worker_threads module at the same time?同时使用 Node.js PM2 集群和 Node.js worker_threads 模块的最有效方法是什么?
【发布时间】:2021-01-21 20:02:18
【问题描述】:

我正在使用 PM2 集群模块为我的每个 CPU 内核生成一个 Node.js 应用程序实例。 同时,对于 CPU 繁重的操作(如加密),我正在使用 Piscina(Node.js 的工作池库模块,它基于 Node.js 工作线程模块)。

基本上,我使用一些工作线程创建一个 Piscina 实例,并在每次点击特定 API 时调用它进行加密操作。

考虑到我为每个应用程序实例创建了一个工作池,这在内存使用方面是否效率不高?同时使用工作线程和 Node.js 集群模块最有效的方法是什么?

【问题讨论】:

    标签: node.js pm2 worker


    【解决方案1】:

    简短的回答是肯定的,如果您使用 PM2 或 Cluster 模块,则内存使用效率低,因为它们使用进程分叉而不是利用多线程。

    在您的情况下,问题是工作池是在应用程序实例内创建的,这可能会导致内存使用效率低下(我认为如果池配置充分考虑到应用程序实例,它可能可以忽略不计)。 您可以创建另一个单独的节点简单应用程序,仅用于处理像微服务这样的加密任务,并在运行应用程序集群之前启动它。集群工作人员可以通过一些 IPC 消息协​​议或更好地使用 GRPC/REST 与它通信。

    【讨论】:

    • 嗨,我真的需要 pm2 方面的帮助。所以我按照每个教程的建议做了一切。我的 pm2 状态是活动且在线,我也做了 pm2 启动部分,但我的应用程序仍然无法运行。当我停止 pm2 并运行 node index.js 我的应用程序工作。为什么 pm2 不工作?
    • @kd12345 请就此提出另一个问题。
    • 您好 Eduard 我有一个问题,如果您可以看一下。stackoverflow.com/questions/65915465/…
    猜你喜欢
    • 2017-10-08
    • 2016-03-03
    • 1970-01-01
    • 2019-01-25
    • 2012-01-19
    • 2018-03-07
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    相关资源
    最近更新 更多