我在NodeJS中有一个应用程序。
最近我们获得了更多的流量(这对我来说是一种全新的体验)所以我一直在使用" EMFILE:太多的打开文件"单个进程尝试打开的文件超出文件系统允许的错误。
我增加了这个限制,所以我们现在很好。但是,我不确定这个解决方案将持续多久......
我想知道:用于扩展节点应用程序的其他常用选项有哪些? (特别注意打开文件限制问题。)
允许群集的PM2流程管理器引起了我的注意(我是否正确理解应用程序的每个实例都需要它自己的核心 - 即你不能在一个核心上运行4个实例? )。是否有其他经常使用的技术?
谢谢(提前)
答案 0 :(得分:0)
PM2是一个简单的解决方案,当你想运行多个Node实例时,另一个常见的替代方案是集群模块http://nodejs.org/api/cluster.html请记住,你需要配置另一个http服务器,如Nginx来反转将您的用户请求代理到您的Node进程。
无论核心数量多少,您都可以运行任意数量的节点进程。但由于每个节点进程都是单个线程,并且每个核心可以一次执行单个线程,因此最佳配置是核心数量与节点进程数量匹配的时间。如果节点进程的数量大于核心数,则在负载下,由于处理器必须执行的冗余上下文切换,您将体验到性能降低。