【发布时间】:2019-06-11 20:40:43
【问题描述】:
我想知道 pm2 如何让我的 express 应用代码在未修改的情况下在并行进程中运行。当我尝试手动启动我的 express 应用程序的另一个实例时,例如监听端口 3000,我总是收到端口已在使用中的错误。
pm2 是修改运行的 js 代码以在中间插入一些调整,还是模拟某种 VM,然后只向世界公开 pm2 进程的一个端口?幕后发生了什么?
【问题讨论】:
我想知道 pm2 如何让我的 express 应用代码在未修改的情况下在并行进程中运行。当我尝试手动启动我的 express 应用程序的另一个实例时,例如监听端口 3000,我总是收到端口已在使用中的错误。
pm2 是修改运行的 js 代码以在中间插入一些调整,还是模拟某种 VM,然后只向世界公开 pm2 进程的一个端口?幕后发生了什么?
【问题讨论】:
PM2 不允许您在端口上再次启动相同的脚本。如果您使用pm2 start app.js -f 选项强制脚本重新启动,pm2 将重复尝试启动脚本,但每次都会失败,因为该端口已在使用中。 pm2 ls 可能表明有两个进程正在运行,但实际上第二个进程不断失败,您可以通过运行 pm2 logs 命令来确认。
如果你说的是 pm2 的集群模式,那么 pm2 只是在内部使用 NodeJS 的集群模块对多个子进程之间的请求进行负载平衡。
【讨论】: