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

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

我们正在使用 Express 3 运行 Node Socket.io 服务器。使用以下工具监控服务器:永远。服务运行良好,但 CPU 的使用率在一天内不断增长,直到达到 90% 以上,然后突然下降到约 20%,如下图所示。我认为下降是由于永远重新启动应用程序造成的。

CPU 行为

我想知道的是;

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

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

任何帮助都将不胜感激,这个问题使得管理我们的服务器变得非常困难。请告诉我这个问题是否更适合在 StackOverflow 上提出。

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

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

有时,仅 500 个连接,CPU 就会达到 100%,有时则达到 1500 个连接。我知道发送消息的速率会产生很大的影响,但速率相当稳定。

答案1

我遇到了完全一样的问题,可惜没有人给我们任何建议......

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

相关内容