用 pm2 跑项目为啥会弹出 4 个 Nodejs 窗口
用 pm2 跑项目为啥会弹出 4 个 Nodejs 窗口
跑的 bin/www,跑 app.js 会无限重启 现在的状况是项目启动没问题了,但是会弹出 4 个 node 的命令符窗口,这意味啥 是姿势不对吗
btw v2 现在发图片要用什么图床,新浪好像炸了?
如果用 pm2 的多 cpu 模式启动,按数量启动,就会有多个窗口,node cluster
如果程序使用 node cluster 模式,win 下也会弹多个
linux 屁事没有
一楼是正确的,另外 win 系列跑 nodejs 确实很操蛋,建议换系统 hhh…
windows 下启动的吧? 确实是有这个问题
升级最新版 pm2,之前遇到过,然后有个版本 release notes 说解决了
在使用 PM2(Process Manager for Node.js)运行项目时,如果遇到弹出多个 Node.js 窗口的情况,这通常是因为 PM2 在后台启动了多个进程来管理你的应用。PM2 默认会使用集群模式(cluster mode)来最大化利用多核 CPU 的性能,从而可能启动多个 Node.js 实例。
以下是一些可能的原因和相应的代码展示:
-
集群模式: 如果你的项目在
pm2.config.js
或启动命令中设置了instances
参数大于 1,PM2 会为每个实例启动一个 Node.js 进程。// pm2.config.js module.exports = { apps: [ { script: 'app.js', instances: 4, // 这里指定了4个实例 exec_mode: 'cluster' } ] };
-
未指定实例数: 即使你没有明确指定
instances
,PM2 在检测到多核 CPU 时,也可能默认以集群模式启动多个实例。你可以通过以下命令查看当前配置:pm2 show <app-name>
如果看到
instances
大于 1,这就是原因。 -
解决办法: 如果你不想看到多个 Node.js 窗口,可以将
instances
设置为 1,或者禁用集群模式:instances: 1, exec_mode: 'fork' // 使用fork模式,而不是cluster
调整配置后,重新启动 PM2 即可。