【问题标题】:Strategies for scale a nodeJS application?扩展 nodeJS 应用程序的策略?
【发布时间】:2015-01-29 05:07:25
【问题描述】:

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

最近我们获得了更多的流量(这对我来说是一种新体验),所以我遇到了“EMFILE:打开的文件过多”错误,这是单个进程尝试打开更多文件时引起的超出文件系统允许的范围。

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

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

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

谢谢(提前)

【问题讨论】:

  • 您可以尝试增加可打开的最大文件数量see this issue

标签: node.js pm2


【解决方案1】:

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

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

【讨论】:

  • pm2 正在使用集群模块,如果你也想要的话;)pm2 start app.js -i 0
猜你喜欢
  • 2021-08-07
  • 2018-05-22
  • 1970-01-01
  • 2015-05-23
  • 2015-12-04
  • 1970-01-01
  • 2023-03-04
  • 2018-06-07
  • 1970-01-01
相关资源
最近更新 更多