Найти утечку памяти в приложении Node.js / Express.js

У меня есть веб-приложение Express.js, которое постоянно ломается из-за проблем с памятью:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap
out of memory

Когда я запускаю службу, использование памяти составляет около 170 МБ (сообщается memwatch как память RES). Затем я начинаю бросать запрос на него, и память начинает расти. Я использую, memwatch.HeapDiff()чтобы попытаться отследить проблему в том, что похоже на утечку памяти, но сообщает что-то вроде:{ before: { nodes: 2093729, size_bytes: 197165296, size: '188.03 mb' }, after: { nodes: 2491264, size_bytes: 232097040, size: '221.34 mb' }, ...

htop

... где я понимаю, что приложение использует 221.34mb для кучи; но при htopиспользовании памяти около 2 ГБ, когда он ломается.

Вопрос в том, что, если мои предположения верны, что может использовать память без кучи, которая по-прежнему сообщается htop как память RES?

javascript,linux,express,memory-leaks,node-memwatch,

3

Ответов: 1


2

Я видел это раньше, где память, о которой сообщалось в используемой, была намного меньше той памяти, которую видел htop.

В нашем случае это была утечка памяти в JavaScript, которая выглядела небольшой, но когда была исправлена ??проблема с памятью.

Я написал сообщение, в котором подробно описаны шаги, которые я предпринял для его диагностики, слишком долго для публикации.

https://www.alexkras.com/simple-guide-to-finding-a-javascript-memory-leak-in-node-js/

JavaScript, Linux, экспресс, с памятью утечки, узел-memwatch,
Похожие вопросы