You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PM2启动缓慢报错阻塞服务器开机,SSH无法连接的解决咨询

问题描述

通过以下命令配置PM2开机自启:

npm i -g pm2
pm2 start "node /service/www.js" --name myservice
pm2 startup
pm2 save

重启Ubuntu服务器后出现异常开机阻塞现象:

  • 开机阶段显示 [...] A start job is running for pm2 process manager,持续约3分钟,此时SSH登录成功但无法获取Shell提示符,Apache可正常提供静态HTML服务
  • 随后显示 [...] Failed to start pm2 process manager 及提示 See: systemctl status pm2-root.service,该状态再持续约3分钟,SSH仍不可用
  • 最终系统完成开机,SSH可获取Bash提示符,此时PM2运行正常,systemctl status pm2-root.service 无异常

需解决PM2启动延迟阻塞服务器开机的问题。

解决方案

1. 修改PM2服务的启动依赖

PM2默认的systemd服务可能在网络或关键服务未就绪时启动,导致超时阻塞。编辑PM2的systemd配置文件:

sudo nano /etc/systemd/system/pm2-root.service

找到 After= 行,修改为仅依赖必要服务:

After=network.target multi-user.target

确保文件中存在 WantedBy=multi-user.target 配置,之后重新加载systemd配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart pm2-root.service

2. 缩短PM2服务的启动超时时间

默认启动超时为3分钟,可缩短超时时间避免长时间阻塞:
在上述pm2-root.service文件中添加或修改:

TimeoutStartSec=30

修改后重新加载配置:

sudo systemctl daemon-reload

这样PM2启动超时会快速失败,后续systemd会自动重启服务,不会占用3分钟阻塞窗口。

3. 排查Node.js服务的启动依赖

你的/service/www.js可能依赖未就绪的资源(如数据库、网络存储),导致PM2启动超时。可通过添加启动延迟规避:

pm2 delete myservice
pm2 start --name myservice "sleep 10 && node /service/www.js"
pm2 save

或在Node.js代码中添加资源就绪检查逻辑,确保服务仅在依赖就绪后启动。

4. 重新生成PM2的systemd配置

若原有配置存在异常,重新生成干净的配置:

pm2 unstartup systemd
pm2 startup systemd --service-name pm2-root --user root
pm2 save
sudo systemctl daemon-reload

内容的提问来源于stack exchange,提问作者Dan Spirit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:52:48