【问题标题】:RSS memory increases while heap is stable in Node.jsNode.js 中堆稳定时 RSS 内存增加
【发布时间】:2017-12-04 00:44:10
【问题描述】:

我有一个 node.js 应用程序,它支持 React 服务器渲染和通信内部服务器 API。 顺便说一句,应用程序的 RSS 内存正在逐渐增加。

我已经进行了 5 天的故障排除,并且已经检查了堆转储的比较。但是堆是稳定的。只有RSS在增加。

2017-06-29 09:10:00 083: memoryUsage { rss: 107597824, heapTotal: 78532608, heapUsed: 68423584 }
2017-06-29 09:10:00 212: memoryUsage { rss: 107163648, heapTotal: 78532608, heapUsed: 67970768 }
2017-06-29 09:10:00 377: memoryUsage { rss: 106213376, heapTotal: 77484032, heapUsed: 67166800 }
2017-06-29 09:10:00 448: memoryUsage { rss: 106184704, heapTotal: 78532608, heapUsed: 62869512 }
....
....
2017-06-30 15:25:00 144: memoryUsage { rss: 140972032, heapTotal: 78532608, heapUsed: 65703576 }
2017-06-30 15:25:00 379: memoryUsage { rss: 135626752, heapTotal: 74338304, heapUsed: 64624224 }
2017-06-30 15:25:00 396: memoryUsage { rss: 139800576, heapTotal: 78532608, heapUsed: 66888688 }
2017-06-30 15:25:00 699: memoryUsage { rss: 140886016, heapTotal: 77484032, heapUsed: 67736488 }
2017-06-30 15:25:00 926: memoryUsage { rss: 142073856, heapTotal: 78532608, heapUsed: 67849096 }

起初,我认为它是由许多客户端请求引起的。然而,今天,我遇到了短期的巨大流量。顺便说一句,RSS 内存没有增加流量。很奇怪。

我真的很想解决这个问题。我应该怎么做?

Node.js version: 6.9.4
OS: RHEL 6.8

内存使用

网络输入

【问题讨论】:

  • 您可以尝试检查您的应用程序:nodejs.org/en/docs/inspector。使用--inspect 启动,然后在基于铬的浏览器中打开提供的链接。它可能会为您提供有关消耗内存的信息。
  • 您也可以尝试通过在基于 chromium 的浏览器中打开堆转储来调查它们。
  • @vsenko 我已经检查过检查员和堆转储。但我找不到任何问题。堆大小也很稳定。
  • 如果 RSS 内存在增加,那么您肯定应该注意到有更多的项目(JS 对象或 C 内存分配)。据我所知,内存消耗增长缓慢,所以你必须等到你能看到差异。

标签: node.js memory


【解决方案1】:

如果您使用 keepAlive 和超时发出 http 请求,请尝试更新的节点。存在影响 v6.8 和 v6.9 的内存泄漏,已在 6.10 中修复(请参阅 https://github.com/nodejs/node/pull/9440

编辑:实际上,如果我没记错的话,这也会影响 heapUsed,而不仅仅是 rss。

你会泄漏缓冲区吗?缓冲区不在堆上,但确实增加了 rss。

【讨论】:

  • 我之前在 nodejs 的 github 上创建了一个问题。这个问题昨天已经解决了。 Nodejs 的加密模块存在内存问题。你可以在这里查看。 github.com/nodejs/node/issues/13917
猜你喜欢
  • 1970-01-01
  • 2013-01-20
  • 2017-05-27
  • 2012-03-11
  • 2021-11-05
  • 2011-11-27
  • 1970-01-01
  • 2021-12-08
  • 2014-08-20
相关资源
最近更新 更多