Память
В этом документе вы можете узнать о том, как отлаживать проблемы, связанные с памятью.
Мой процесс исчерпывает память
Node.js (JavaScript) — это язык со сборкой мусора, поэтому утечки памяти возможны через удерживающие объекты (retainers). Поскольку приложения Node.js обычно являются многопользовательскими, критически важными для бизнеса и долго работающими, предоставление доступного и эффективного способа поиска утечки памяти имеет важное значение.
Симптомы
Пользователь наблюдает непрерывно растущее использование памяти (может быть быстрым или медленным, в течение дней или даже недель), а затем видит, как процесс аварийно завершается и перезапускается менеджером процессов. Процесс может работать медленнее, чем раньше, а перезапуски приводят к сбою некоторых запросов (балансировщик нагрузки отвечает кодом 502).
Побочные эффекты
- Перезапуски процесса из-за нехватки памяти и потеря запросов
- Увеличение активности GC приводит к увеличению использования ЦП и замедлению времени отклика
- GC блокирует Event Loop, что приводит к замедлению
- Увеличение подкачки памяти замедляет процесс (активность GC)
- Может не хватить доступной памяти для получения Heap Snapshot
Мой процесс неэффективно использует память
Симптомы
Приложение использует неожиданно большой объем памяти и/или мы наблюдаем повышенную активность сборщика мусора.
Побочные эффекты
- Увеличенное количество ошибок страниц
- Более высокая активность GC и использование ЦП