скрипт после OOM?
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
В логе... а pm2 при этом вообще ничего не сделал
Есть тут люди, кто в pm2 шарит и может помочь? Вопрос до сих пор не решен... ☝️
нет, понять, почему pm2 не рестартит
мб пофиксить причину?
Если бы все писали идеальный код, то в pm2 не было бы нужды. А его придумали как раз для подобных вещей 😉
проблема скорее всего не в пм2. у тя где то код протикает
Да понятно, что он протекает и проблема уже решается... Я спрашиваю не про проблему в коде, а про проблему в PM2. Почему он не перезагрузился. Если знаете более хорошее решение для продакшн-серверов, напишите... но писать то, что код должен быть идеальным в наше время — ну уже слишком... Неужели вы реально всегда без багов пишете код? Что прям сразу запускается и ни одного лишнего байта в памяти не потребляется? Нагрузка на ЦП оптимальная и никто не может ваш код улучшить? И даже если так... вы уверены, что все библиотеки, которые вы подключили в коде написаны такими же идеальными программистами? У вас прям нулевая вероятность, что код безошибочно работает? Поздравляю. Но у меня ситуация другая. Сегодня сервер не перезагрузился из-за вылета по памяти. И мне совершенно пофиг, кто из программистов накосячил, когда и зачем... и мне пофиг, что можно потратить N времени на решение этой проблемы. Мне важно сделать так, чтобы эта проблема не мешала конечным клиентам получать ценность продукта. И я при этом не надеюсь на идеальный мир и понимаю, что везде есть проблемы. И еще раз повторюсь... системы управления процессами типа supervisor, pm2 и прочих создавались как раз для таких людей как я, кто не верит в идеальных программистов.
не перезагрузился вероятно потому что он сам на ноде работает, а если хип забился он не сможет работать.
👍🏻 Вполне возможно
А разве нода (или pm2) не должны хип разделять между процессами?
1. Нужно смотреть лимит памяти на процес, может у вас стоит лимит который не может быть предоставлен всем процессам + самому пм2 (пример: на машине 16гб, запущено 8 процессов у каждого лимит 2гб - скорее всего крашнется всё вплоть до пм2 поскольку не будет хватать физически памяти) 2. Какая политика перезапуска приложения , может просто не установлен конфиг для перезагрузки процеса 3. Падвающие по памяти процессы плохая практика перезапускать - если у вас в процессинге есть данные, они потеряются, что приведёт к неконсистентности. 4. Есть более простая обёртка forever - она тупо будет ребутать упавший процес
forever был до pm2 😊 Как я уже писал, до сегодняшнего дня pm2 не подводил
3. У нас текущий стейт всегда персистится куда-нибудь, поэтому проблем с перезапуском нет.
Обсуждают сегодня