如何解决同时使用 Node.js PM2 集群和 Node.js worker_threads 模块的最有效方法?
我正在使用 PM2 集群模块为我的每个 CPU 内核生成一个 Node.js 应用程序实例。 同时,对于 CPU 密集型操作(如加密),我使用 Piscina(一个用于 Node.js 的工作池库模块,它基于 Node.js 工作线程模块)。
基本上,我创建了一个带有一些工作线程的 Piscina 实例,并在每次点击特定 API 时调用它进行加密操作。
考虑到我为每个应用程序实例创建了一个工作池,这在内存使用方面是否效率低下?同时使用工作线程和 Node.js 集群模块的最有效方法是什么?
解决方法
简短的回答是肯定的,如果您使用 PM2 或 Cluster 模块,则内存使用效率低下,因为它们使用进程分叉而不是利用多线程。
在您的情况下,问题是工作池是在应用程序实例内部创建的,这可能会导致内存使用效率低下(我认为,如果池配置充分考虑到应用程序实例,则可能可以忽略不计)。 您可以创建另一个单独的节点简单应用程序,仅用于处理微服务等加密任务,并在运行应用程序集群之前启动它。集群工作人员可以通过一些 IPC 消息协议或更好地使用 GRPC/REST 与其进行通信。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。