我用bolt-js,node.js和slack api做了一个slack应用。
我已经使用PM2设置了一个Jenkins CI/CD管道来将node.js部署到AWS EC2,但是在pm2重新加载步骤中遇到了一些问题。
EC2示例中有两个核心,因此当我在PM2集群模式下运行它时,有两次运行。
以下是我的ecosystem.config.js
:
module.exports = {
apps: [{
name: 'project-name',
cwd: './project-path',
script: 'npm',
args: 'start',
instances: 0,
exec_mode: 'cluster_mode'
}]
字符串
当我运行pm2 start ecosystem.config.js
命令时,它运行得很好-没有port already in use
错误。但是当我用pm2 reload <appname>
重新加载pm2时,显示以下错误:
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (node:net:1740:16)
at listenInCluster (node:net:1788:12)
at Server.listen (node:net:1876:7)
at project-path/node_modules/@slack/bolt/dist/receivers/HTTPReceiver.js:177:25
at new Promise (<anonymous>)
at HTTPReceiver.start (project-path/node_modules/@slack/bolt/dist/receivers/HTTPReceiver.js:143:16)
at App.start (project-path/node_modules/@slack/bolt/dist/App.js:241:30)
at project-path/app.js:320:13
at Object.<anonymous> (project-path/app.js:322:3)
at Module._compile (node:internal/modules/cjs/loader:1256:14) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '::',
port: 3000
型
它说我的端口3000已经在使用中,并自行重新加载三次。
当集群从集群0切换到集群1时,多次重新加载是成功的-它完成了自己的工作,并在多次重新加载后成功部署了更新的代码,如下所示:
[nodemon] app crashed - waiting for file changes before starting...
2023-09-13T15:40:12: PM2 log: Stopping app:project-name id:_old_0
2023-09-13T15:40:12: PM2 log: App name:project-name id:_old_0 disconnected
2023-09-13T15:40:12: PM2 log: App [project-name:_old_0] exited with code [0] via signal [SIGINT]
2023-09-13T15:40:12: PM2 log: pid=13051 msg=process killed
2023-09-13T15:40:12: PM2 log: App [project-name:1] starting in -cluster mode-
2023-09-13T15:40:12: PM2 log: App [project-name:1] online
型
然而,当集群从集群1切换到集群0时,它只是停留在应用程序崩溃的消息上,就像这样:[nodemon] app crashed - waiting for file changes before starting...
并且新的集群没有启动。
[nodemon] app crashed - waiting for file changes before starting...
2023-09-13T15:32:41: PM2 log: Stopping app:project-name id:_old_1
2023-09-13T15:32:41: PM2 log: App name:project-name id:_old_1 disconnected
2023-09-13T15:32:41: PM2 log: App [project-name :_old_1] exited with code [0] via signal [SIGINT]
2023-09-13T15:32:41: PM2 log: pid=12638 msg=process killed
型
为什么会这样?
- bolt.js是否与AWS EC2部署不兼容?
- 是什么原因导致从群集1到群集0的群集切换无法正常工作?
是否有可能解决此问题?
1条答案
按热度按时间ibrsph3r1#
很久以前就解决了..开始的剧本是错误的。
而不是
字符串
、
型
工作正常。