我想知道pm2如何使我的快速应用程序代码在未经修改的并行进程中运行。当我尝试手动启动我的Express应用程序的另一个实例时,例如端口3000,我总是得到该端口已被使用的错误。
pm2是否修改运行的js代码以在中间插入一些调整,还是模仿某种VM,然后仅将pm2进程的一个端口暴露给世界?幕后发生了什么?
答案 0 :(得分:0)
PM2不允许您再次在端口上启动相同的脚本。如果使用pm2 start app.js -f
选项强制脚本重新启动,则pm2将反复尝试启动脚本,但由于该端口已在使用中,因此每次都会失败。 pm2 ls
可能表明有两个进程正在运行,但实际上第二个进程正在连续失败,您可以通过运行pm2 logs
命令来确认相同的进程。
如果您正在谈论pm2的集群模式,那么在这种情况下pm2只是在内部使用NodeJS的集群模块对多个子进程之间的请求进行负载均衡。