【问题标题】:Heap stable while rss increases node.js当 rss 增加 node.js 时堆稳定
【发布时间】:2015-12-27 01:36:28
【问题描述】:

我有一个用 node.js 编写的应用程序,它可以正常工作。唯一的问题是内存不断增加,直到达到 1.3Gb 并立即下降到 ~400Mb。一开始我以为是内存泄漏,但进一步调查表明没有泄漏。

heap-dump 的分析没有给出任何有用的信息,只是证明没有泄漏。我正在使用node.js v4.2.1,并且该应用程序大量使用websockets (socket.io),传输设置为仅['websockets']。对于负载平衡,我使用PM2 in cluster mode (4 instances)

可能是什么原因?后果是什么?你认为从长远来看它可能会导致服务器崩溃吗?

【问题讨论】:

  • 你使用socket-io适配器还是sticky-cluster?
  • @trquoccuong 我用socket.io-redis

标签: node.js express socket.io


【解决方案1】:

如果您计划使用pm2 在不同进程或机器之间分配连接负载,则必须确保与特定会话 ID 关联的请求连接到发起它们的进程。如果它连接错误的进程,它将向服务器发出大量请求ajax。您可以在浏览器中使用检查器进行检查,刷新网页并检查套接字是否正常运行。它会使内存增加更快,当它限制时,它会调用gc()。

【讨论】:

  • 我没有使用 XHR 轮询或 JSONP 轮询传输,只有 WebSocket,它不需要粘性会话。 gc() 应该定期调用,所以我仍然不明白为什么它在达到最大值之前不清理内存,考虑到服务器根本不忙(CPU ~20%),所以没有什么可以阻止 gc()做好它的工作。
猜你喜欢
  • 2017-12-04
  • 2012-03-11
  • 2014-08-20
  • 2013-01-20
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
相关资源
最近更新 更多