如何调试Node + Socket.io CPU问题

Ste*_*son 12 debugging memory-leaks cpu-usage websocket node.js

我们正在使用Express 3运行Node Socket.io服务器.使用Forever监视服务器.该服务运行良好,但CPU一整天都在增长,直到达到90%+然后突然下降到~20%,如下图所示.我相信这种下降是由Forever重新启动应用程序引起的.

CPU行为

我想知道的是;

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

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

任何帮助将不胜感激,这个问题使管理我们的服务器非常困难.我在一周前在Serverfault上发布了这个问题,但没有收到回复,所以我认为这可能会更好.

更新:经过更多研究后,CPU似乎与连接数没有直接关联.我们的临界质量似乎是大约1500个并发连接分裂如下:

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

有时我们可能只有100个CPU,只有500个连接,有时则是1500个连接.我知道发送的邮件速率有很大的影响,但速度相当一致.

Ber*_*aki 3

我经验不足,但 CPU 延迟的主要原因可能是:

  1. 代码执行时间:如果您有多个循环,请考虑为它们提供更少的数据以进行处理/提取。
  2. 并发连接:我也遇到了这个问题,一个人可以打开 3-4 个浏览器选项卡/窗口,因此请尝试为每个用户建立 1 个并发连接(注意)。你可以使用会话

如果我想到一些事情,我会尝试编辑这个答案,你可以看到下面的链接,了解 Nodejs 上的服务器压力测试。

链接在这里

希望对您有帮助。