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

Ste*_*son 5 debugging memory-leak cpu-usage socket node.js

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

CPU 行为

我想知道的是;

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

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

任何帮助将不胜感激,这个问题使管理我们的服务器变得非常困难。请让我知道这个问题是否更适合 StackOverflow。

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

  • xhr 轮询:767
  • 网络套接字:692
  • jsonppolling:80

有时我们可以在只有 500 个连接的情况下 100% CPU,其他时候它的 1500 个连接。我知道发送消息的速率有很大的影响,但是速率是相当一致的。

Fra*_*nko 3

我遇到了完全相同的问题,遗憾的是没有人给我们任何建议......

这是我的问题解释 node.js,mongodb,redis,在ubuntu生产中性能下降,RAM是免费的,CPU 100%