pm2 --max-restarts限制不起作用并且连续重启崩溃主机系统

Adi*_*iii 14 node.js docker pm2

我试过pm2来限制重启限制--max-restarts但是它不起作用而且累了min_uptime

sudo pm2 start server.js --max-restarts=5 
Run Code Online (Sandbox Code Playgroud)

我也试过yml文件

apps:
  - name: node-mt
    script: server-socket.js
    watch: true
    max_restarts: 5
    min_uptime: 5000
Run Code Online (Sandbox Code Playgroud)

但它并不限制应用程序的重启.

如果pm2经常崩溃,它会导致主机系统崩溃,内存使用量从300mb到800mb.

应用程序运行时的正常状态.

在此输入图像描述

当应用程序崩溃时.然后图表非常高.

我需要停止最大重启,以避免因内存使用率过高而导致主机崩溃.我不想限制内存使用标志. 在此输入图像描述

Rid*_*ara 9

PM2 max_restarts负离子min_uptime工作正常。您需要了解两者的类比。

根据文档

在您的应用被视为错误并停止重新启动之前,连续不稳定重新启动的次数(小于1秒(默认)间隔或通过min_uptime的自定义时间)

这意味着,如果您的min_uptime为5000,max_restarts为5,则如果应用崩溃并在少于5000ms的时间内重新启动了5次,则该应用将被视为错误。如果它在5秒钟内重新启动了4次,则不会认为它是错误的,并继续重新启动它。

如果您的应用始终使用此配置重新启动,则意味着您的应用在5秒钟内没有重启5次。可能的解决方案是在min_uptime中给出一个相对较高的数字,例如一个小时左右,或者您可以通过手动测试找到它。

当我第一次在节点cron应用程序中遇到它并创建以下演示时,我很高兴了解这一点。

app.js

setTimeout(function () {
  console.log('killed');
  process.exit(1)
}, 100);
Run Code Online (Sandbox Code Playgroud)

生态系统.config.json

{
  "apps" : [{
    "name"         : "api",
    "script"       : "./app.js",
    "max_restarts" : 3,
    "min_uptime"   : 300
  }]
}
Run Code Online (Sandbox Code Playgroud)

这将杀死您的进程,但是如果您将超时更改为130+(我不知道为什么,但是它适用于小于130的值(可能是ms精确度,并且直到第一次重启都不会考虑配置)),否则它将无法工作。它将开始重新启动应用程序。

PM2记录

聚苯乙烯

min_uptime 也可以字符串形式给出。

在此处输入图片说明