PM2 для автоматического запуска после сбоя - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть дроплет DigitalOcean с небольшим объемом оперативной памяти, но там мне нужно разместить много процессов pm2 (если быть точнее, 9–8 в кластерном режиме (при условии -i 0) и 1 в режиме вилки),Эти процессы являются серверами NodeJS Express, которые выполняют рендеринг на стороне сервера для проектов React.js.

Таким образом, как и ожидалось, иногда сбой pm2 происходит из-за недостатка оперативной памяти, и после сбоя он, очевидно, не восстанавливает всепроцессы, несмотря на то, что демон запуска включен.

Я знаю, что демон запуска работает только при запуске системы, поэтому теперь каждый раз, когда сбой pm2, я должен вручную переходить к капле и перезагружать систему на ней.

Есть ли обходные путиавтоматизировать этот процесс?Или, может быть, существует какой-то демон pm2, который работает при запуске pm2?

Цените любую помощь!
Заранее спасибо!


Обновление

Вотпоследний журнал сбоев (часть, связанная с сбоем вручную):

<--- Last few GCs --->

[11194:0x3184710] 38854201 ms: Scavenge 24.7 (28.2) -> 23.8 (28.2) MB, 0.5 / 0.0 ms  allocation failure
[11194:0x3184710] 38888980 ms: Scavenge 24.8 (28.2) -> 23.9 (28.7) MB, 0.7 / 0.0 ms  allocation failure
[11194:0x3184710] 39006864 ms: Scavenge 24.8 (28.7) -> 23.9 (28.7) MB, 0.7 / 0.0 ms  allocation failure
[11194:0x3184710] 39131478 ms: Scavenge 24.8 (28.7) -> 23.9 (28.7) MB, 0.4 / 0.0 ms  allocation failure


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0xa90e93a5879 <JSObject>
    0: builtin exit frame: parse(this=0xa90e93890a9 <Object map = 0x188eb7f82ba1>,0x33a45597fe41 <String[338]: {"type":"axm:monitor","data":{"Loop delay":{"value":"0.81ms","ag$

FATAL ERROR: Committing semi space failed. Allocation failed - process out of memory
1: node::Abort() [node /home/<private path>/frontend/dist-server/server.bundle.js]
2: 0x8c20ec [node /home/<private path>/frontend/dist-server/server.bundle.js]
3: v8::Utils::ReportOOMFailure(char const*, bool) [node /home/<private path>/frontend/dist-server/server.bundle.js]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node /home/<private path>/frontend/dist-server/server.bundle.js]
5: v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node /home/<private path>/frontend/dist-server/server.bundle$
6: v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node /home/<private path>/fronte$
7: v8::internal::Factory::NewJSObject(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::PretenureFlag) [node /home/<private path>/frontend/dist-server$
8: v8::internal::JsonParser<true>::ParseJsonObject() [node /home/<private path>/frontend/dist-server/server.bundle.js]
9: v8::internal::JsonParser<true>::ParseJsonValue() [node /home/<private path>/frontend/dist-server/server.bundle.js]
10: v8::internal::JsonParser<true>::ParseJson() [node /home/<private path>/frontend/dist-server/server.bundle.js]
11: v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [node /home/<private path>/frontend/dist-server/server.bundle.js]
12: 0x1d7ee3e8697d

1 Ответ

0 голосов
/ 17 декабря 2018

Подключите PM2 к PM2 + , чтобы агент, связывающий PM2 с PM2 +, действовал как второй сторожевой таймер.Если основной сбой PM2, агент PM2 + перезапустит PM2 с предыдущим списком процессов

...