我有一个 Next 14 项目在 PM2 上以集群模式运行,我的 VPS 有 4 个 vCPU,当仅启动一个进程时稳定,而其他三个进程处于无限重新加载。下面是我的ecosystem.config.js配置文件。
module.exports = {
apps: [
{
name: "application",
script: "npm",
exec_mode: "cluster",
instances: "max",
args: "start",
env: {
NODE_ENV: "production",
PORT: 5000
},
},
],
};
pm2版本:5.3.1
在最后一张图中,三个集群重新启动了 24 次
即使问题仍然存在,我也使用了 max_memory_restart,VPS 有 6GB RAM。
pm2 日志
PM2 | App [application:3] online
0|application | > [email protected] start
0|application | > next start
PM2 | App name:application id:1 disconnected
PM2 | App [application:1] exited with code [1] via signal [SIGINT]
PM2 | App [application:1] starting in -cluster mode-
PM2 | App [application:1] online
PM2 | App name:application id:0 disconnected
PM2 | App [application:0] exited with code [1] via signal [SIGINT]
PM2 | App [application:0] starting in -cluster mode-
PM2 | App [application:0] online
3|application | > [email protected] start
3|application | > next start
1|application | > [email protected] start
1|application | > next start
PM2 | App name:application id:3 disconnected
PM2 | App [application:3] exited with code [1] via signal [SIGINT]
PM2 | App [application:3] starting in -cluster mode-
PM2 | App [application:3] online
0|application | > [email protected] start
0|application | > next start
PM2 | App name:application id:1 disconnected
PM2 | App [application:1] exited with code [1] via signal [SIGINT]
PM2 | App [application:1] starting in -cluster mode-
PM2 | App [application:1] online
PM2 | App name:application id:0 disconnected
PM2 | App [application:0] exited with code [1] via signal [SIGINT]
PM2 | App [application:0] starting in -cluster mode-
PM2 | App [application:0] online
3|application | > [email protected] start
3|application | > next start
1|application | > [email protected] start
1|application | > next start
PM2 | App name:application id:3 disconnected
PM2 | App [application:3] exited with code [1] via signal [SIGINT]
PM2 | App [application:3] starting in -cluster mode-
PM2 | App [application:3] online
解决方案:
module.exports = {
apps: [
{
name: "application",
script: "./node_modules/next/dist/bin/next", // changed
exec_mode: "cluster",
instances: "max",
args: "start",
env: {
NODE_ENV: "production",
PORT: 5000
},
},
],
};