NodeJS服务器

时间:2017-01-31 17:28:28

标签: node.js sockets scalability

我们正在运行基于NodeJS express的服务器来处理来自基于Particle Photon的设备的传入请求。服务器和设备之间的通信是加密的,我们在NodeJS中使用decrypto库。我们使用NodeJS v0.10.25在4核8GB机器上运行服务器,目前每秒接收220个请求(每个请求大约1kB)。我们也使用PM2进行负载平衡。对于收到的每个请求,我们发出一个事件来处理它(进入NodeJS的单个事件队列?)

但似乎带有PM2的NodeJS无法处理此负载。它工作了一段时间,但无法及时处理所有事件。在累积了大量待处理请求后,它会停止所有传入的数据包,并继续处理已排队的数据/事件。

  1. NodeJS服务器是否存在可扩展性问题? NodeJS不适合这种重负载吗?是因为使用了一个非常古老的NodeJS版本(由于依赖性,我们对升级有点偏执)? 此外,
  2. Load Balancing NodeJS的最佳工具是什么(我们可以使用除PM2以外的其他方式获得更好的性能)?
  3. 我们可以使用什么机制(库,代码或工具)来分析有关NodeJS v8引擎的统计信息。特别是,我们需要更多关于V8引擎下的事件循环数(我认为只有1)的信息,以及在任何时间点待处理的事件循环中事件的计数/性质。
  4. 如果事件循环队列过载,这是NoseJS与套接字断开连接并暂停传入请求的已知问题吗?有没有办法配置这种行为?
  5. 提前多多感谢

1 个答案:

答案 0 :(得分:0)

似乎使用最新稳定的NodeJS版本(4.3.2)解决了这个问题。