【问题标题】:pm2 Daemon Dies After a Few Hourspm2 守护进程在几个小时后死亡
【发布时间】:2019-09-17 15:45:04
【问题描述】:

我有一个 Node.js/Express 应用程序,它实现了一组 REST API,我正在尝试使用 pm2 来管理它的部署。该应用程序启动良好(使用pm2 start ecosystem.config.js)并保持可用几个小时,但 pm2 守护程序最终总是死掉,日志中没有任何错误。

几点说明:

  • 我在 CentOS 7 共享主机环境中运行。
  • /var/log 目录为空,journalctl 不返回任何条目。
  • 我已确认系统没有重新启动。
  • 我唯一安装的 pm2 模块是pm2-logrotate
  • 我正在捕获和记录 SIGINTSIGTERMSIGQUITSIGABRT 信号,但这种逻辑似乎从未受到影响(如果我运行 pm2 stop,它就会受到影响)。
  • 如果我运行 pm2 list,它只会重新启动守护程序并显示一个空的应用程序列表。

这是我的ecosystem.config.js

module.exports = {
  apps: [
    {
      kill_timeout: 60000,
      listen_timeout: 10000,
      log: 'logs/my-app.log',
      name: 'my-app',
      script: 'dist/index.js',
      wait_ready: true,

      instances: 1,
      autorestart: true,
      watch: false,
      max_memory_restart: '1G',
      env: {
        NODE_ENV: 'development'
      },
      env_production: {
        NODE_ENV: 'production'
      }
    }
  ]
};

这里是pm2.log

2019-04-24T19:20:24: PM2 log: ===============================================================================
2019-04-24T19:20:24: PM2 log: --- New PM2 Daemon started ----------------------------------------------------
2019-04-24T19:20:24: PM2 log: Time                 : Wed Apr 24 2019 19:20:24 GMT-0700 (Mountain Standard Time)
2019-04-24T19:20:24: PM2 log: PM2 version          : 3.5.0
2019-04-24T19:20:24: PM2 log: Node.js version      : 10.5.0
2019-04-24T19:20:24: PM2 log: Current arch         : x64
2019-04-24T19:20:24: PM2 log: PM2 home             : /home/myuser/.pm2
2019-04-24T19:20:24: PM2 log: PM2 PID file         : /home/myuser/.pm2/pm2.pid
2019-04-24T19:20:24: PM2 log: RPC socket file      : /home/myuser/.pm2/rpc.sock
2019-04-24T19:20:24: PM2 log: BUS socket file      : /home/myuser/.pm2/pub.sock
2019-04-24T19:20:24: PM2 log: Application log path : /home/myuser/.pm2/logs
2019-04-24T19:20:24: PM2 log: Process dump file    : /home/myuser/.pm2/dump.pm2
2019-04-24T19:20:24: PM2 log: Concurrent actions   : 2
2019-04-24T19:20:24: PM2 log: SIGTERM timeout      : 1600
2019-04-24T19:20:24: PM2 log: ===============================================================================
2019-04-24T19:20:24: PM2 log: App [pm2-logrotate:0] starting in -fork mode-
2019-04-24T19:20:24: PM2 log: App [pm2-logrotate:0] online
2019-04-24T19:20:24: PM2 log: App [my-app:1] starting in -fork mode-
2019-04-24T19:20:28: PM2 log: App [my-app:1] online

这里是pm2-logrotate-out.log

"/home/myuser/.pm2/logs/my-app-out-1__2019-04-25_00-00-00.log" has been created
"/home/myuser/my-app/logs/my-app-1__2019-04-25_00-00-00.log" has been created

知道是什么导致了这个问题,或者我可以如何进一步调试它?

【问题讨论】:

  • 从你发布的pm2.log,你看过这两个日志文件了吗:2019-04-24T19:20:24: PM2 log: Application log path : /home/myuser/.pm2/logs2019-04-24T19:20:24: PM2 log: Process dump file : /home/myuser/.pm2/dump.pm2
  • 是的,/home/myuser/.pm2/logs 是一个目录,其中包含我的应用程序的 errout 日志以及 pm2-logrotateerr 日志为空。我的应用程序的out 日志没有错误,pm2-logrotateout 日志如上所示。 /home/myuser/.pm2/dump.pm2 仅包含 []

标签: node.js pm2 pm2-logrotate


【解决方案1】:

事实证明,这是由我的托管服务提供商施加的资源限制引起的。我仍然对为什么没有记录任何内容来表明发生了什么感到困惑,但我将其标记为已回答,因为我找到了根本原因。

【讨论】:

    最近更新 更多