Node.JS内置集群还是PM2集群?
哪个更好?
我已经启动了与工作者的Nodejs集群模式,但是现在我发现了同样的事情的PM2。 我使用keymetrics从我的web服务器查看统计信息,我注意到,当我启动我的NodeJS节点(具有内置群集)而没有使用PM2群集function时,Keymetrics报告使用了20 / 30MB Ram。
如果我停用集群(在节点内部)并开启PM2集群,则keymetrics报告约300MB的Ram使用情况。
现在,哪种方法更好,为什么使用内置的集群keymetrics报告只有30MB的内存使用量?
我使用PM2。 有很多原因是更好的。
- 与使用核心的集群不同,您的代码只需要很less的修改即可使用PM2。 集群逻辑不属于我们构build的每个应用程序。
- 它从命令行缩放。 我可以简单地运行
pm2 scale my-app +1
以在部署之后实时添加另一个工作人员。 - 你应该已经使用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