0

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

最近我们获得了更多的流量(这对我来说是一种新体验),所以我遇到了“EMFILE:打开的文件太多”错误,这是由于单个进程尝试打开的文件多于文件系统而导致的允许。

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

我想知道:扩展流量越来越大的节点应用程序的其他常用选项是什么?(特别注意打开文件限制问题。)

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

提前致谢)

4

1 回答 1

0

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

无论内核数量如何,您都可以运行任意数量的 Node 进程。但是由于每个node进程都是一个线程,并且每个core一次可以执行一个线程,所以最优的配置是core的数量与node进程的数量相匹配。如果 Node 进程的数量大于内核的数量,在负载下,由于处理器必须执行的冗余上下文切换,您将体验到性能下降。

于 2015-01-28T21:07:25.667 回答