【发布时间】:2017-06-17 06:11:45
【问题描述】:
我们正在运行基于 NodeJS express 的服务器来处理来自基于 Particle Photon 的设备的传入请求。服务器和设备之间的通信是加密的,我们在 NodeJS 中使用解密库。我们在 4 核 8GB 机器上运行服务器,使用 NodeJS v0.10.25,目前每秒接收 220 个请求(每个请求大约 1kB 数据)。我们也使用 PM2 进行负载平衡。对于收到的每个请求,我们都会发出一个事件来处理它(进入 NodeJS 的单个事件队列?)
但似乎带有 PM2 的 NodeJS 无法处理这种负载。它可以工作一段时间,但无法及时处理所有事件。在积累了大量未决请求后,它会停止任何传入的数据包并继续处理它已排队的数据/事件。
- NodeJS 服务器是否存在可扩展性问题? NodeJS 不适合这么重的负载吗?是不是因为使用了非常旧的 NodeJS 版本(由于依赖关系,我们对升级有点偏执)? 另外,
- 负载平衡 NodeJS 的最佳工具是什么(我们能否使用 PM2 以外的工具获得更好的性能)?
- 我们可以使用什么机制(库、代码或工具)来分析有关 NodeJS v8 引擎的统计信息。特别是,我们需要有关 V8 引擎下的事件循环数(我认为只有 1 个)以及事件循环中在任何时间点未决的事件的数量/性质的更多信息。
- 如果事件循环队列过载,这是 NoseJS 与套接字断开连接并暂停传入请求的已知问题吗?有没有办法配置这种行为?
提前非常感谢
【问题讨论】:
标签: node.js sockets scalability