首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PM2在崩溃后自动重新启动

PM2在崩溃后自动重新启动
EN

Stack Overflow用户
提问于 2018-12-17 20:59:07
回答 1查看 2.1K关注 0票数 0

我有一些带有少量内存的DigitalOcean droplet,但我应该托管很多pm2进程(更准确地说,集群模式下有9-8个进程(使用提供的-i 0),分叉模式下有1个进程)。这些进程是为React.js项目执行服务器端呈现的NodeJS Express服务器。

因此,正如预期的那样,有时pm2会因为内存不足而崩溃,并且在崩溃之后,尽管启用了启动守护进程,但显然无法恢复所有进程。

我知道,启动守护程序只在系统启动时起作用,所以现在每次当pm2崩溃时,我都应该手动转到droplet并在它上面重新启动系统。

有没有什么变通办法让这个过程自动化呢?或者,可能存在一些在pm2启动时工作的pm2守护进程?

感谢您的帮助!

提前感谢!

更新

这是最后的崩溃日志(与手动崩溃相关的部分):

代码语言:javascript
复制
<--- 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
EN

回答 1

Stack Overflow用户

发布于 2018-12-17 21:42:52

将PM2连接到PM2+,以便将PM2链接到PM2+的代理将充当第二个监视器。如果主PM2崩溃,PM2+代理将使用上一个进程列表重新生成PM2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53815768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档