Skip to content

内存

本文档介绍如何调试与内存相关的 issue。

我的进程内存耗尽

Node.js(JavaScript)是一种垃圾回收语言,因此可能通过持有者出现内存泄漏。由于 Node.js 应用程序通常是多租户、业务关键型和长期运行的,因此提供一种易于访问且高效的查找内存泄漏的方法至关重要。

症状

用户观察到内存使用量持续增加(可能很快或很慢,几天甚至几周),然后看到进程管理器使进程崩溃并重启。进程可能比以前运行得更慢,并且重启会导致某些请求失败(负载均衡器响应 502)。

副作用

  • 由于内存耗尽导致进程重启,请求丢失
  • GC 活动增加导致 CPU 使用率更高,响应时间更慢
    • GC 阻塞事件循环导致速度变慢
  • 内存交换增加减慢进程速度(GC 活动)
  • 可能没有足够的可用内存来获取堆快照

我的流程内存使用效率低下

症状

应用程序使用了意外数量的内存和/或我们观察到垃圾收集器活动增加。

副作用

  • 页错误数量增加
  • 更高的 GC 活动和 CPU 使用率