Mr.*_*ito 6 javascript linux memory-leaks express node-memwatch
我有一个 Express.js Web 应用程序,由于内存问题,它经常崩溃:
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap
out of memory
当我启动服务时,内存使用量约为 170Mb(由 htop 报告为 RES 内存)。然后我开始向它发出请求,内存开始上升。我曾经memwatch尝试跟踪看起来像内存泄漏的问题,但memwatch.HeapDiff()报告如下:
{ before: { nodes: 2093729, size_bytes: 197165296, size: '188.03 mb' },
  after: { nodes: 2491264, size_bytes: 232097040, size: '221.34 mb' },
  ...
...我了解到应用程序正在使用 221.34mb 作为堆;但htop坏掉时内存使用量约为2GB。
问题是,如果我的假设是正确的,那么什么可能会使用 htop 仍将其报告为 RES 内存的非堆内存?
我以前见过这种情况,其中使用的内存报告比 htop 看到的内存小得多。
在我们的例子中,这是 JavaScript 中的内存泄漏,看起来很小,但修复后解决了内存问题。
我写了一篇文章,详细介绍了我诊断它的步骤,这里发帖太长了。
https://techtldr.com/simple-guide-to-finding-a-javascript-memory-leak-in-node-js/
| 归档时间: | 
 | 
| 查看次数: | 8181 次 | 
| 最近记录: |