У нас возникли проблемы с нашим приложением Production Nuxt3. Он работает на PM2 (режим кластера) на Ubuntu VPS. Использование памяти со временем продолжает расти.
При локальном запуске (Node и PM2 установлены на Windows или Mac) стресс-тест действительно заполняет память, но в конечном итоге сборка мусора, похоже, выполняет свою работу:
Мониторинг PM2, секунды после стресс-теста и один час после теста:
При работе на Ubuntu использование памяти остается неизменным. Монит PM2 (производственный сервер, Ubuntu 22.04.4 LTS, узел v20.14.0, PM2 5.4.0) после 17 часов безотказной работы:
В результате нам приходится перезапускать PM2 каждые пару дней. Я попробовал использовать --optimize_for_size для Node. Это снизило общее использование памяти, но не рост.
Я воспроизвел это поведение на своем ПК с Windows с помощью WSL. После стресс-теста использование памяти осталось высоким. Значит, виновник должен иметь какое-то отношение к Ubuntu. Есть идеи? 🤔





Возможно, где-то в вашем приложении произошла утечка памяти. Проверьте, не делаете ли вы что-то, что не может быть собрано мусором на стороне сервера, например, неправильное использование плагинов (см. вторую статью), создание интервалов, которые не очищаются, и т. д.
Вот несколько статей, которые могут помочь:
Я не уверен, Windows может по-другому распределять память. Получили ли вы какие-то результаты от инспектора узлов на локальном экземпляре Ubuntu? Возможно, это даст больше понимания проблемы. Кроме того, пробовали ли вы удалить определенные функции/части приложения, чтобы посмотреть, в чем может заключаться проблема?
@ Тим, очень распространенная проблема. Возможно, это проблема сервера/узла, возможно, попробуйте сузить ее, как сказано выше, удалив части фреймворка. Или даже попробуйте вообще обойтись без фреймворка, что может помочь сузить круг вопросов.
Да, возможно у нас где-то утечка памяти. Я просто не могу найти 😢
Спасибо, я уже прочитал все эти статьи. И все же мне интересно, почему сборка мусора работает на наших локальных машинах? 🤔