pm2 守护进程在几个小时后死亡
pm2 Daemon Dies After a Few Hours
我有一个 Node.js/Express 应用程序,它实现了一组 REST API,我正在尝试使用 pm2 来管理它的部署。该应用程序启动正常(使用 pm2 start ecosystem.config.js
)并保持可用几个小时,但 pm2 守护程序最终总是死掉,日志中没有任何错误。
一些注意事项:
- 我运行正在使用 CentOS 7 共享主机环境。
/var/log
目录是空的,journalctl
没有 return 任何条目。
- 我已确认系统没有重新启动。
- 我安装的唯一 pm2 模块是
pm2-logrotate
。
- 我正在捕获和记录
SIGINT
、SIGTERM
、SIGQUIT
和 SIGABRT
信号,但该逻辑似乎永远不会被击中(如果我运行 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
知道是什么导致了这个问题,或者我该如何进一步调试它?
事实证明,这是由我的托管服务提供商施加的资源限制引起的。我仍然对为什么没有任何记录表明发生了什么感到困惑,但我将其标记为已回答,因为我找到了根本原因。
我有一个 Node.js/Express 应用程序,它实现了一组 REST API,我正在尝试使用 pm2 来管理它的部署。该应用程序启动正常(使用 pm2 start ecosystem.config.js
)并保持可用几个小时,但 pm2 守护程序最终总是死掉,日志中没有任何错误。
一些注意事项:
- 我运行正在使用 CentOS 7 共享主机环境。
/var/log
目录是空的,journalctl
没有 return 任何条目。- 我已确认系统没有重新启动。
- 我安装的唯一 pm2 模块是
pm2-logrotate
。 - 我正在捕获和记录
SIGINT
、SIGTERM
、SIGQUIT
和SIGABRT
信号,但该逻辑似乎永远不会被击中(如果我运行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
知道是什么导致了这个问题,或者我该如何进一步调试它?
事实证明,这是由我的托管服务提供商施加的资源限制引起的。我仍然对为什么没有任何记录表明发生了什么感到困惑,但我将其标记为已回答,因为我找到了根本原因。