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

PM2运行Nuxt应用随机时间后无报错自动退出问题求助

排查与解决方案

1 优先排查系统级进程终止原因

  • 首先检查Linux系统日志确认是否为OOM(内存溢出) killer终止进程:
    执行命令 grep -i 'out of memory\|killed process' /var/log/syslog (Debian/Ubuntu系统)或 grep -i 'out of memory\|killed process' /var/log/messages(CentOS/RHEL系统)
    低配VPS(内存≤1G)运行Nuxt应用时非常容易触发内存溢出被系统强制终止,如果命中OOM日志,优先升级VPS配置或者调整Nuxt构建配置减少内存占用。
  • 检查内核日志确认终止信号来源:执行命令 dmesg | grep -i sigint 排查是哪个进程向Nuxt服务发送了SIGINT中断信号。

2 修正PM2配置

你当前的配置存在两个可优化的稳定点:

  • 优先使用Nuxt构建后的独立入口启动,而非调用nuxt start命令:Nuxt执行build后会生成.output目录,直接启动该目录下的服务入口可以减少进程开销,稳定性更高,修改后的配置参考:
module.exports = {
  apps: [
    {
      name: 'Photostation',
      // 替换为你项目的绝对路径
      cwd: '/www/photostation',
      // 直接启动构建产物入口
      script: '.output/server/index.js',
      instances: 1,
      // 单实例优先用fork模式,避免cluster模式的通信开销
      exec_mode: 'fork',
      kill_timeout : 108000,
      autorestart: true,
      // 可选:配置环境变量
      env: {
        NODE_ENV: 'production'
      }
    }
  ]
}
  • 补充绝对路径配置:不要使用相对路径作为script、cwd的取值,避免PM2工作目录切换导致的异常。

3 排查PM2自身异常

从你提供的日志可以看到PM2守护进程自身在16:17发生了重启,这也是服务中断的直接原因之一,修复方案:

  • 将PM2注册为系统服务,避免SSH会话断开时被系统清理进程:
    执行命令 pm2 startup ,按照输出的提示完成系统服务注册,之后执行 pm2 save 保存当前运行的进程列表,后续PM2会随系统自动启动,不会受SSH会话影响。
  • 升级PM2到最新稳定版:你当前使用的PM2 5.1.2存在已知的守护进程异常退出bug,执行 npm install pm2@latest -g 升级后重新启动服务。

4 兜底排查方案

如果以上方案都无效,可以先脱离PM2直接前台运行服务,观察退出时的报错:

  • 进入项目目录,执行 node .output/server/index.js 保持SSH会话连接,等待服务退出时查看控制台输出的报错信息,定位问题根源。

内容的提问来源于stack exchange,提问作者Jood jindy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:15:01