我们在运行任何 pm2 命令时遇到了一个非常奇怪的问题。在运行
pm2 list
我们在控制台中得到了这个结果
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
但我们的 pm2 日志为我们提供了有关错误的更多信息:
PM2] 使用 pm2_home=/root/.pm2 生成 PM2 守护进程 2023-11-15T14:06:46:PM2 日志: ======================================================================================== 2023-11-15T14:06:46:PM2 日志: --- 新的 PM2 守护进程已启动 ---------------------------------------------------- 2023-11-15T14:06:46:PM2 日志:时间:2023 年 11 月 15 日,星期三 14:06:46 GMT+0000(协调世界时) 2023-11-15T14:06:46:PM2 日志: PM2 版本:5.3.0 2023-11-15T14:06:46:PM2 日志:Node.js 版本:16.20.2 2023-11-15T14:06:46:PM2 日志:当前 arch:x64 2023-11-15T14:06:46:PM2 日志:PM2 主页
:/root/.pm2 2023-11-15T14:06:46:PM2 日志:PM2 PID 文件:/root/.pm2/pm2.pid 2023-11-15T14:06:46:PM2 日志:RPC 套接字文件
:/root/.pm2/rpc.sock 2023-11-15T14:06:46:PM2 日志:BUS 套接字文件
:/root/.pm2/pub.sock 2023-11-15T14:06:46:PM2 日志:应用程序日志路径:/root/.pm2/logs 2023-11-15T14:06:46:PM2 日志:工作间隔
:30000 2023-11-15T14:06:46:PM2 日志:进程转储文件:/root/.pm2/dump.pm2 2023-11-15T14:06:46:PM2 日志:并发操作
:2 2023-11-15T14:06:46:PM2 日志:SIGTERM 超时:1600 2023-11-15T14:06:46:PM2 日志: ====================================================================================== [PM2] PM2 成功守护进程 2023-11-15T14:06:46:PM2 日志: ========================================================================================================== 2023-11-15T14:06:46:PM2 日志: --- 捕获到 PM2 全局错误 --------------------------------------------------- 2023-11-15T14:06:46: PM2 日志:时间:2023 年 11 月 15 日,星期三 14:06:46 GMT+0000(协调世界时)2023-11-15T14:06:46:PM2 错误:Listen 方法已被调用多次而未关闭。2023-11-15T14:06:46:PM2 错误:错误 [ERR_SERVER_ALREADY_LISTEN]:Listen 方法已被调用多次而未关闭。在 Server.listen(node:net:1550:11)处的 new NodeError(node:internal/errors:387:5)中。 (/usr/local/lib/node_modules/pm2/node_modules/pm2-axon/lib/sockets/sock.js:408:21) 在 Server.emit (node:events:513:28) 在 Server.emit (node:domain:489:12) 在 Pipe.onconnection (node:net:1696:10) 在 Pipe.callbackTrampoline (node:internal/async_hooks:130:17) 2023-11-15T14:06:46: PM2 日志: ========================================================================================== 2023-11-15T14:06:46:PM2 错误:[PM2] 复活 PM2 在执行此过程之前,请确保拥有最新版本npm install pm2@latest -g
。node:net:1550 throw new ERR_SERVER_ALREADY_LISTEN(); ^错误 [ERR_SERVER_ALREADY_LISTEN]: Listen 方法已被多次调用且未关闭。 在新的 NodeError(node:internal/errors:387:5)处 在 Server.listen(node:net:1550:11)处 在 Server。 (/usr/local/lib/node_modules/pm2/node_modules/pm2-axon/lib/sockets/sock.js:408:21) 在 Server.emit(node:events:513:28) 在 Server.emit(node:domain:489:12) 在 Pipe.onconnection(node:net:1696:10) 在 Pipe.callbackTrampoline(node:internal/async_hooks:130:17){代码:'ERR_SERVER_ALREADY_LISTEN'}
pm2 在后台运行了十几个这样的进程
节点 /usr/local/bin/pm2 更新
导致服务器内存不足
答案1
在启动 pm2 进程时尝试使用以下命令选项。
它将根据调整后的RAM或Cron时间自动重启pm2
pm2 start app.js --max-memory-restart 1G
pm2 start app.js --cron-restart="0 12 * * *"