PM2 如何管理运行多个进程监听同一端口?

问题描述 投票:0回答:2

我想知道 pm2 如何允许我的 Express 应用程序代码在并行进程中未经修改地运行。当我尝试手动启动我的 Express 应用程序的另一个实例时,例如监听端口 3000,我总是收到端口已在使用中的错误。

pm2 是否修改运行的 js 代码以在中间插入一些调整,或者它是否模拟某种虚拟机,然后仅向世界公开 pm2 进程的一个端口?幕后发生了什么?

node.js pm2
2个回答
0
投票

我来寻找相同的答案(在考虑PM2Node集群的性能与可用性时),并发现这个答案没有答案。因此为未来的读者发布:

来自马口

集群模式允许联网 Node.js 应用程序 (http(s)/tcp/udp 服务器)可在所有可用 CPU 上进行扩展, 无需任何代码修改。这大大提高了性能 以及应用程序的可靠性,具体取决于 CPU 的数量 可用的。在底层,它使用 Node.js 集群模块,例如 缩放应用程序的子进程可以自动共享 服务器端口。

这意味着:主集群进程是打开端口的进程,子进程在内部共享同一端口。


-3
投票

PM2 不允许您在端口上再次启动相同的脚本。如果您使用

pm2 start app.js -f
选项强制脚本再次启动,pm2 将重复尝试启动脚本,但每次都会失败,因为该端口已在使用中。
pm2 ls
可能显示有两个进程正在运行,但实际上第二个进程不断失败,您可以通过运行
pm2 logs
命令来确认这一点。

如果你说的是pm2的集群模式,那么pm2只是在内部使用NodeJS的集群模块对多个子进程之间的请求进行负载均衡。

© www.soinside.com 2019 - 2024. All rights reserved.