Node.JS内置集群还是PM2集群?

哪个更好?

我已经启动了与工作者的Nodejs集群模式,但是现在我发现了同样的事情的PM2。 我使用keymetrics从我的web服务器查看统计信息,我注意到,当我启动我的NodeJS节点(具有内置群集)而没有使用PM2群集function时,Keymetrics报告使用了20 / 30MB Ram。

如果我停用集群(在节点内部)并开启PM2集群,则keymetrics报告约300MB的Ram使用情况。

现在,哪种方法更好,为什么使用内置的集群keymetrics报告只有30MB的内存使用量?

我使用PM2。 有很多原因是更好的。

  1. 与使用核心的集群不同,您的代码只需要很less的修改即可使用PM2。 集群逻辑不属于我们构build的每个应用程序。
  2. 它从命令行缩放。 我可以简单地运行pm2 scale my-app +1以在部署之后实时添加另一个工作人员。
  3. 你应该已经使用PM2来保持这个进程的活着。 所以群集是免费的。

我无法复制任何接近你的300MB号码的东西。 事实上,我最近有一个泄漏的应用程序,我不得不使用--max-memory-restart ,即使在这种情况下,内存使用通常保持在100MB以下。 尽pipe如果PM2的集群使用更多的内存,我不会感到惊讶,只是因为它为你开箱即用。

我的build议是不要过早优化。 使用PM2直到你真的需要从系统中挤出每一滴内存/性能(绝对不是在你有很多stream量之前)。 在这一点上,您可以计算出聚类所需的最小值,并且可以自己重新实现这些部分。

资源

  • 集群演练: https : //keymetrics.io/2015/03/26/pm2-clustering-made-easy/
  • PM2教程: https : //futurestud.io/tutorials/pm2-cluster-mode-and-zero-downtime-restarts