PM2节点应用程序在一个新端口上生成每个集群实例



我有一个节点应用程序与以下启动脚本npm run build && serve -s dist。我希望在部署时利用PM2集群实现0停机时间。据我所知,PM2应该启动共享相同端口的应用程序的多个实例。我认为我们已经配置好了一切,但是节点应用程序的某些东西导致实例在单独的端口上运行,因此它们不共享端口。我用一个简单的Hello World应用程序进行了测试,它的工作原理完全符合我的预期(所有实例共享一个端口),所以这是指向我在应用程序堆栈中的东西导致它。想知道是否有任何原因,为什么它可能会在自己的端口或任何方向上生成实例,我可以指向。

My PM2生态系统。配置——

module.exports = {
apps : [{
name: "Application",
script: "npm",
args: "start",
exec_mode: "cluster",
instances : 2,
wait_ready: true,
listen_timeout: 30000
}]
}

包。json -

"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:ci": "vue-cli-service test:unit",
"test": "vue-cli-service test:unit "--verbose"",
"lint": "vue-cli-service lint",
"start": "npm run build && serve -s dist"
},

PM2 ls命令-

➜  application-fe git:(develop) ✗ pm2 ls
┌─────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ Application    │ default     │ N/A     │ cluster │ 62342    │ 67s    │ 0    │ online    │ 0%       │ 46.5mb   │ user… │ disabled │
│ 1   │ Application    │ default     │ N/A     │ cluster │ 62476    │ 37s    │ 0    │ online    │ 0%       │ 45.4mb   │ user… │ disabled │
└─────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

为每个实例打开的端口-

➜  application-fe git:(develop) ✗ sudo lsof -i -P -n | grep LISTEN | grep node
node      62522      user   23u  IPv6 0x724bf7c95bff58bb      0t0    TCP *:5000 (LISTEN)
node      62551      user   21u  IPv6 0x724bf7c95322025b      0t0    TCP *:51494 (LISTEN)

看起来可以归结为使用" serve -s dist"在package.json.

切换到使用express服务静态文件和PM2创建两个实例共享端口并按预期行为

最新更新