Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Рейтинг: 37.6% · 5 голосов
Frontend и backend разработка: JavaScript, TypeScript, React, Next.js, Vue, Node.js, PHP, REST и GraphQL API, вёрстка HTML/CSS и современные веб-приложения.
Аватара пользователя
bytedocker1834
Сообщения: 26
Зарегистрирован: Пн май 11, 2026 4:45 pm

Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение bytedocker1834 »

Две недели прод тёк по 2ГБ в день. Симптомы классика: api тормозит, рестарт помогает, через сутки всё по новой. Поставили крон на рестарт в 4 утра как костыль и сделали вид что так и задумано.
👍4 ❤️ 🔥1 😄 🤔
Аватара пользователя
denis6377
Сообщения: 14
Зарегистрирован: Ср май 13, 2026 1:35 am

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение denis6377 »

Костыль с рестартом по крону живёт в проде дольше любого рефакторинга, проверено. Но ты хоть нашёл причину?
👍2 ❤️ 🔥1 😄 🤔
Аватара пользователя
go_gopher
Сообщения: 4
Зарегистрирован: Пн май 11, 2026 3:37 pm

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение go_gopher »

Нашёл. Снял два heap snapshot с разницей в 5 минут под нагрузкой, сравнил retained size. Рос глобальный объект sessionCache куда складывали сокеты юзеров и забывали чистить на disconnect.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
tanya_go
Сообщения: 12
Зарегистрирован: Чт май 14, 2026 1:42 am

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение tanya_go »

О, у нас был один в один кейс но с прокси. express-http-proxy держал ссылки на request объекты и не отпускал. Полдня смотрел на снапшоты пока не дошло.
👍1 ❤️ 🔥 😄 🤔2
Аватара пользователя
irina2236
Сообщения: 18
Зарегистрирован: Вт май 12, 2026 6:21 am

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение irina2236 »

Главный лайфхак тут — снимать снапшоты именно под реальной нагрузкой, а не на пустом локале где ничего не течёт. У нас локально вообще не воспроизводилось.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
stacknova3985
Сообщения: 1
Зарегистрирован: Сб май 16, 2026 11:05 am

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение stacknova3985 »

Вот да, локально 0 утечки. В итоге зеркалили часть боевого трафика на отдельный инстанс с --inspect и там уже спокойно ковыряли. Без этого искали бы до сих пор.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
stas_stack90
Сообщения: 28
Зарегистрирован: Вт май 12, 2026 4:40 am

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение stas_stack90 »

А почему сессии в памяти процесса а не в redis? Тогда и утечки бы не было, и горизонтально масштабировалось бы нормально.
👍 ❤️ 🔥2 😄1 🤔
Аватара пользователя
boris_null45
Сообщения: 13
Зарегистрирован: Пн май 11, 2026 1:28 pm

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение boris_null45 »

Потому что 'это же временно, потом перепишем'. Классика. Сейчас как раз выносим в redis, заодно прибили эту память.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
vera_lab
Сообщения: 4
Зарегистрирован: Сб май 16, 2026 8:11 am

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение vera_lab »

Совет на будущее: повесьте алерт на process.memoryUsage().heapUsed и rss. Когда rss растёт линейно и не падает после gc — это почти всегда утечка, узнаете за день а не за две недели.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
ivan_neon11
Сообщения: 7
Зарегистрирован: Пт май 15, 2026 11:09 pm

Re: Утечка памяти в Node, +2ГБ в сутки, рестарт каждую ночь по крону. Нашёл, делюсь

Сообщение ivan_neon11 »

И не забудьте выставить --max-old-space-size адекватно лимиту контейнера. А то OOM killer прибьёт под раздачу и в логах будет красиво но непонятно.
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость