如何debuggingNode + Socket.io CPU问题

我们使用Express 3运行Node Socket.io服务器。使用Forever监视服务器。 该服务运行良好,但CPU一直在增长,直到达到90%以上,然后突然下降到20%左右,如下图所示。 我相信,永远是重新启动应用程序所造成的下降。

CPU行为

我想知道的是

  • 什么是可能导致Node.js应用程序行为的典型因素?
  • 什么工具/方法可用于debugging节点应用程序中的内存泄漏/ CPU占用?

我认为这可能与Socket.io在用户断开连接时没有清理资源有关,尽pipe文档说Socket.io会自动pipe理这个。

任何帮助将不胜感激,这个问题是使我们的服务器pipe理非常困难。 我已经在一个星期前在Serverfault上发布了这个问题,但是没有收到回复,所以我觉得在这里可能会更好。

更新:经过更多的研究,看起来CPU并不直接与连接数相关。 我们的临界质量似乎大约是1500个并发连接,如下所示:

  • xhr-polling:767
  • websocket:692
  • jsonppolling:80

有时我们可能只有500个连接,而其他时间只有1500个连接。 我知道发送邮件的速度有很大的影响,但速度是相当一致的。

我不是那么有经验,但你的CPU延迟的主要原因可能是:

  1. 代码执行时间 :如果你有几个循环看起来给他们更less的数据,以cranch /提取。
  2. 并发连接:我也有这个问题,一个人可以打开3-4个浏览器的标签/窗口,所以试图使每个用户1并发连接NB。 你可以使用会话

我会尝试编辑这个答案,如果我有一些事情浮现在脑海,你可以看到下面的链接服务器在Nodejs上的压力testing。

链接在这里

希望它可以帮助你。

Interesting Posts