Почему мой Node.js app через несколько дней начинает использовать столько памяти?

У меня есть бэкенд на Node.js, запущенный на DigitalOcean droplet, который обрабатывает вебхуки. Спустя несколько дней работы использование памяти ползёт вверх до 80-90% и мне приходится перезагружать сервер. В коде я не вижу очевидной утечки памяти. Стоит ли мне смотреть в сторону event loop или это что-то с тем, как Node обрабатывает garbage collection?

1 ответ

Сначала проверь свои обработчики вебхуков - незавершённые соединения, объекты, накапливающиеся в замыканиях, или буферы, которые не освобождаются, вот обычные причины, намного чаще встречаются, чем проблемы со сборкой мусора. Используй что-то вроде clinic.js или встроенные снимки heap, чтобы увидеть, что на самом деле остаётся в памяти, вместо того чтобы гадать. Event loop сам по себе редко вызывает утечки памяти; почти всегда это объекты, которые никогда не очищаются. Если в твоём коде ничего очевидного не появляется, посмотри на свои зависимости - иногда библиотека кэширует всё подряд или в ней баг, который был исправлен в более новой версии.

Ваш ответ

Войдите, чтобы ответить.