我在使用ecosystem.config.js文件重新加载应用程序时遇到了问题。当应用程序第一次启动时,它会正确启动,但是当我使用ecosystem.config.js文件刷新/重新加载应用程序时,应用程序会重新启动几次,导致错误。
我的也是Ubuntu,PM2版本是3.2.2,Nodev10.13.0。应用程序使用了Express模块的最新版本(4.16.4)。如果我用"pm2重载app_name“重新加载应用程序,则不会出现此问题。
ecosystem.config.js内容:
module.exports = {
apps: [{
script: "./index.js",
instances: "max",
exec_mode: "cluster",
kill_timeout: "2000",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
}当我第一次跑步时:
$ pm2重载ecosystem.config.js PM2应用程序索引未运行,启动..。 启动PM2应用程序索引(2个实例) 节点@ubuntu:/data/$ pm2日志 跟踪所有进程的最后15行(用>-选项 /home/node/.pm2/pm2.log最后15行: PM2 : 2018-11-23T13:14:30: PM2日志: App索引:0开始于-cluster >模式- PM2 : 2018-11-23T13:14:31: PM2日志: App索引:0联机 PM2 : 2018-11-23T13:14:31: PM2日志: App索引:1开始于-cluster >模式- PM2 : 2018-11-23T13:14:31: PM2日志: App索引:1联机
当我按名称(例如: pm2重载app_name)重新加载应用程序时,应用程序将继续运行,但我看到了一些终止进程的超时:
PM2 : 2018-11-23T14:01:02: PM2 log: pid=11296 msg=failed to kill PM2 PM2 2018-11-23T14:01:02: PM2日志: pid 11289在6000 it后仍活着的进程,现在发送给SIGKILL。PM2 : 2018-11-23T14:01:02: PM2 log: pid=11296 msg=failed to kill PM2 PM2 2018-11-23T14:01:02: PM2日志: pid 11296在6000 it后仍活着的进程,现在发送给SIGKILL。PM2 2018-11-23T14:01:02: PM2日志: App名称:索引id:_old_0断开连接的PM2 2018-11-23T14:01:02: PM2日志: App index:_old_通过信号SIGKILL PM2 PM2 +11-23T14:01:02: PM2日志:应用程序名称:索引id:_old_1断开连接PM2 2018-11-23T14:01:02: PM2日志: App index:_old_1通过信号SIGKILL PM2退出2018-11-23T14:01:02: PM2日志: pid=11289 msg=process 23T14 PM2 2018-11-23T14:01:02: PM2日志: pid=11296 msg=process已被杀
但是,即使出现超时,应用程序仍在运行。
当我执行"pm2 reload ecosystem.config.js“时,PM2多次重新启动应用程序,其中一个实例失败:
在Module.load (内部/模块/cjs/loader.js:598:32) 在tryModuleLoad (内部/模块/cjs/loader.js:537:12) 在Function.Module._load (内部/模块/cjs/loader.js:529:3) 在Object处索引0。(/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:48:21) 0\x索引>错误:听EADDRINUSE :3001
我相信这个问题与正确终止Express模块的http连接的超时有关,但我仍在调查这个问题。
发布于 2018-12-13 17:26:34
它已安装在最新的PM2版本上,请更新:
安装npm 2@最新的-g pm2更新
确保您的pm2 delete all,然后再启动您的应用程序,它将工作,然后执行重新加载或重新启动。
https://stackoverflow.com/questions/53448550
复制相似问题