gpt4 book ai didi

node.js - pm2 --max-restarts 限制不工作和连续重启崩溃主机系统

转载 作者:IT老高 更新时间:2023-10-28 12:43:18 25 4
gpt4 key购买 nike

我尝试 pm2 使用 --max-restarts 限制重启限制,但它不起作用并且也很累 min_uptime

sudo pm2 start server.js --max-restarts=5 

我也尝试了 yml 文件

apps:
- name: node-mt
script: server-socket.js
watch: true
max_restarts: 5
min_uptime: 5000

但这并不限制应用程序的重启。

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

应用运行时的正常状态。

enter image description here

当应用程序崩溃时。然后图表变得非常高。

我需要停止 max restart 以避免由于内存使用率高而导致主机崩溃。我不想限制内存使用标志。 enter image description here

最佳答案

PM2 max_restartsmin_uptime 工作得非常好。您需要了解两者的类比。

根据文档

number of consecutive unstable restarts (less than 1sec(default) interval or custom time via min_uptime) before your app is considered errored and stop being restarted

这意味着如果您的 min_uptime 为 5000 且 max_restarts 为 5,那么如果应用程序在 5000 毫秒内崩溃并重新启动 5 次,您的应用程序将被视为错误。如果它在 5 秒内重新启动 4 次,则不会认为它出错并继续重新启动它。

如果您的应用在此配置下不断重启,这意味着您的应用没有在 5 秒内重启 5 次。可能的解决方案是在 min_uptime 中为您的案例提供一个相对较高的数字,例如一个小时左右,或者您可以通过手动测试找到它。

当我第一次使用我的 node cron 应用程序遇到它并创建以下演示时,我很好地理解了这一点。

app.js

setTimeout(function () {
console.log('killed');
process.exit(1)
}, 100);

ecosystem.config.json

{
"apps" : [{
"name" : "api",
"script" : "./app.js",
"max_restarts" : 3,
"min_uptime" : 300
}]
}

这会杀死你的进程,但如果你将超时更改为 130+(我不知道为什么,但它适用于小于 130 的值,因为可能是 ms pricision 并且在第一次重启之前不考虑配置)然后它不会'不工作。它将开始重新启动应用程序。

PM2 documnetation

附言

min_uptime 也可以用字符串给出。

enter image description here

关于node.js - pm2 --max-restarts 限制不工作和连续重启崩溃主机系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49195187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com