我们正在运行一个带有 Express 3 的 Node Socket.io 服务器。该服务器使用Forever进行监控。该服务运行良好,但 CPU 一整天都在增长,直到达到 90%+,然后突然回落到 ~20%,如下图所示。我相信下降是由永远重启应用程序引起的。
我想知道的是;
- 可能导致 Node.js 应用程序出现这种行为的典型因素有哪些?
- 哪些工具/方法可用于调试节点应用程序中的内存泄漏/CPU 占用?
我认为这可能与 Socket.io 在用户断开连接后不清理资源有关,尽管文档说 Socket.io 会自动管理它。
任何帮助将不胜感激,这个问题使我们的服务器管理变得非常困难。如果这个问题更适合放在 StackOverflow 上,请告诉我。
更新:经过更多研究,CPU 似乎与连接数没有直接关联。我们的临界质量似乎是大约 1500 个并发连接,像这样拆分:
- xhr-轮询:767
- 网络套接字:692
- jsonppolling:80
有时我们可能只有 500 个连接时 CPU 使用率为 100%,其他时候有 1500 个连接。我知道发送消息的速率有很大影响,但速率相当稳定。
我遇到了完全相同的问题,很遗憾没有人对我们有任何建议...
这是我的问题解释 node.js,mongodb,redis,关于 ubuntu 生产性能下降,RAM 空闲,CPU 100%