AWS Elastic Beanstalk(节点环境)中的 pm2 重启循环
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk(节点环境)中的 pm2 重启循环【英文标题】:pm2 restart loop in AWS Elastic Beansalk (Node environment) 【发布时间】:2020-10-29 10:58:22 【问题描述】:我有一个在 AWS Elastic Beanstalk 中构建的 NodeJs 环境。我正在使用 pm2 监控上传到环境的 2 个不同的 NodeJS 应用程序。关键是我需要确保local
应用程序在gateway
应用程序启动之前启动。我正在使用npm-run-all
同步以特定顺序启动应用程序。
这是我的 package.json:
"start": "npm-run-all -s start:local start:gateway",
"start:local": "pm2 start ./ecosystem.config.js --only local-service --env production",
"start:gateway": "pm2 start ./ecosystem.config.js --only gateway-service --env production",
这是我的生态系统.config 文件:
module.exports =
apps:
[
name: 'local-service',
script: './dist/services/local.js',
watch: false,
interpreter: 'node',
interpreter_args: '--require ts-node/register --require tsconfig-paths/register',
autorestart: false
,
name: 'gateway-service',
script: './dist/server.js',
watch: false,
interpreter: 'node',
interpreter_args: '--require ts-node/register --require tsconfig-paths/register',
wait_ready: true,
listen_timeout: 5000,
autorestart: false
]
;
elastic beanstalk 日志显示 package.json 中的start
不断被调用。我已将每个应用程序配置为不重启,但似乎还有其他原因导致持续重启发生。我在尝试访问网关服务本身时收到 502 Bad Gateway
错误。
【问题讨论】:
你能提供一个演示吗? 【参考方案1】:请尝试仅使用没有npm-run-all
的pm2 生态系统,即仅使用pm2 start ecosystem.config.js
并允许任何(重新)启动序列,因为在现实生活中您的gateway
和local
应用程序可以以不同的顺序重新启动。
因此,不要使用启动调度逻辑 - 请考虑将该逻辑移至您的 local
应用程序 - 使用 gateway
应用程序监控和重新连接连接失败。
如果您仍想使用启动调度逻辑,请查看pm2 process actions 并添加到gateway
应用代码以触发启动您的local
应用。
【讨论】:
以上是关于AWS Elastic Beanstalk(节点环境)中的 pm2 重启循环的主要内容,如果未能解决你的问题,请参考以下文章
带有 ALB 的 AWS Elastic Beanstalk:节点 Websocket 超时
AWS Elastic Beanstalk(节点环境)中的 pm2 重启循环
AWS Elastic Beanstalk:如何更改节点命令?在最近的更新中删除了容器选项?
在 aws elastic beanstalk 中启动节点 pm2 进程管理器的问题,npm 更新检查失败