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

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

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

Сообщение cpp2 »

Две недели прод тёк по 2ГБ в день. Симптомы классика: api тормозит, рестарт помогает, через сутки всё по новой. Поставили крон на рестарт в 4 утра как костыль и сделали вид что так и задумано.
👍4 ❤️ 🔥1 😄 🤔
✔ Лучший ответ сформирован автоматически — golanggeek
@caffeinebteam, сокет в redis не положишь, это живое tcp соединение. Судя по disconnect у топикстартера там вебсокеты, и держать их в памяти процесса нормально, ненормально забывать чистить. Redis решит вопрос данных сессии, но мапа socketId -> connection всё равно останется в процессе, и течь она умеет точно так же.
Перейти к ответу →
Аватара пользователя
Version
Сообщения: 68
Зарегистрирован: 11 май 2026, 03:17

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

Сообщение Version »

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

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

Сообщение kube6 »

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

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

Сообщение icu2 »

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

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

Сообщение cordoba »

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

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

Сообщение lonelygoblin »

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

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

Сообщение caffeinebteam »

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

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

Сообщение vlad98 »

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

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

Сообщение Farkle »

Совет на будущее: повесьте алерт на process.memoryUsage().heapUsed и rss. Когда rss растёт линейно и не падает после gc — это почти всегда утечка, узнаете за день а не за две недели.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
secret7260
Сообщения: 13
Зарегистрирован: 19 май 2026, 22:58

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

Сообщение secret7260 »

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

Вернуться в «Веб-разработка»

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

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