我想设置 4 个不同的 node.js 实例,每个实例都有自己的核心。 node.js 是将新实例堆叠在同一核心上,还是将它们也设置在新核心上?
这些实例是不相关的并且单独接收请求。我希望 cpu 负载均匀分布。 我一直没能找到这个问题的明确答案。
最佳答案
一般来说,系统会尝试自己完成,以最大限度地利用 cpu。但是,如果你想针对特定的 CPU,你应该查看 TaskSet .它设置了进程的亲和性。
还有几个讨论同一主题的有用问题。看看。
还有一个模块,Cluster ,这对于 CPU 利用率也非常有用。它让您可以 fork 多个进程以将负载分配给多个内核。
更新
最后,我根据 OP 部署了类似的东西。
案例 1.
- 我有一个 8 核 cpu 的专用服务器。
- 我已经部署了一个单 Node 线程并使用集群模块来分担工作负载(如 pl47ypus 所述) PS:感谢他的回答。
- 结果很好,但有时子线程可能会变得无响应,所以我决定尝试我在以前的应用程序中使用的旧流程。
案例 2.
- 同一台服务器,我部署了8个不同端口的node.js进程。
- 然后我将 nginx 放在这些前面,用工作进程 8 监听端口 80。
- 结果比情况 1 好,而且 nginx 配置非常简单,也是最稳定的。
我还建议您只尝试提到的一些解决方案,并在每种情况下继续监控您的系统;像 CPU、内存使用和 io。最后,从您的测试中,您将看到适合您的用例的最佳解决方案。每个应用程序都有自己的要求,因此最好尝试找到您的应用程序真正需要的东西。
关于javascript - 不同内核上的多个 node.js 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949970/