扩展nodeJS应用程序的策略?

时间:2015-01-28 16:15:23

标签: node.js pm2

我在NodeJS中有一个应用程序。

最近我们获得了更多的流量(这对我来说是一种全新的体验)所以我一直在使用" EMFILE:太多的打开文件"单个进程尝试打开的文件超出文件系统允许的错误。

我增加了这个限制,所以我们现在很好。但是,我不确定这个解决方案将持续多久......

我想知道:用于扩展节点应用程序的其他常用选项有哪些? (特别注意打开文件限制问题。)

允许群集的PM2流程管理器引起了我的注意(我是否正确理解应用程序的每个实例都需要它自己的核心 - 即你不能在一个核心上运行4个实例? )。是否有其他经常使用的技术?

谢谢(提前)

1 个答案:

答案 0 :(得分:0)

PM2是一个简单的解决方案,当你想运行多个Node实例时,另一个常见的替代方案是集群模块http://nodejs.org/api/cluster.html请记住,你需要配置另一个http服务器,如Nginx来反转将您的用户请求代理到您的Node进程。

无论核心数量多少,您都可以运行任意数量的节点进程。但由于每个节点进程都是单个线程,并且每个核心可以一次执行单个线程,因此最佳配置是核心数量与节点进程数量匹配的时间。如果节点进程的数量大于核心数,则在负载下,由于处理器必须执行的冗余上下文切换,您将体验到性能降低。