同时使用 Node.js PM2 集群和 Node.js worker_threads 模块的最有效方法?

Most efficient way to use Node.js PM2 clustering and Node.js worker_threads module at the same time?

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

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

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

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

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

与其通信