我们已经构建了一个iOS应用程序,该应用程序使用在Google Compute Engine上托管的Node中编写的RESTful Web API以及我们在Mongo DB中使用的数据库。我们还将Nginx配置为Web服务器,将请求路由到Node js服务。PM2正在运行额外的进程
现在Google计算引擎节点上的js在负载平衡器后面运行,并且自动缩放功能打开。 Web应用程序由iOS应用程序用户以及位于Google Compute Engine上的另一个实例上的后台作业使用。
因为我们在Google Compute Engine上有8台核心机器,所以我们已经开始使用PM2的内核数量设置为8的Node js服务。
现在的问题是,当我启动PM2时,它运行8个进程,但是在一段时间内它显示有超过8个进程正在运行,当我试图用命令'sudo pm2 kill'杀死PM2时,它杀死了所有8个进程在Node js服务启动期间启动的进程,但仍然检查使用命令'sudo lsof -i -P | grep -i'listen'我看到一些processessess仍在运行,并且已经占用了Node js服务正在运行的端口。因此,在我能够重新启动Node js服务之前,我需要杀掉那些额外的PM2进程,然后我只能重新启动PM2。
下面是我的Nginx的配置
upstream node {
server 127.0.0.1:5001;
}
server {
listen 80;
server_name api.dev.yellfy.com;
location/{
#proxy_pass http://127.0.0.1:5001;
proxy_pass http://node;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
client_max_body_size 300M;
proxy_read_timeout 600s;
proxy_connect_timeout 600s;
}
}
请帮我理解为,这可能是背后的额外过程PM2运行的原因。
对于低于基准为技术堆栈我使用
技术堆栈
节点JS - 5.5.0
PM2 - 1.0.0
蒙戈DB - 3.0.4
Nginx的 - 1.6 .3
CentOS Linux release 7.2.1511(Core)
我都面临着PM2类似的问题,试图通过寻找其PID ** PS -aux杀死PM2过程| grep PM2 **它应该终止所有进程 – AJS
我不熟悉'pm2 kill'选项(在[docs](https://github.com/Unitech/pm2)中没有提及),但是也许'kill'就等同于UNIX的'kill -9'命令,它可以有效地杀死进程本身,也可能不是它的产物。如果您使用'pm2 stop all'命令,您是否观察到相同的行为? (或“重启”,“删除”,无论你打算实现的选择)?就我个人而言,我还没有找到一个理由,除了维持'pm2'本身(对我来说只是全局安装)而言,为其他任何内容添加'sudo' –
您可以尝试更新pm2吗?这感觉就像是一个最近修复的bug(无法解决问题)。 – soyuka