PM2缓存带来的问题
公司服务在是使用PM2的cluster模式启动node应用时,Node总是返回`500 Internal Privoxy Error`内部服务器错误,并且node的代码请求远程的后台tomcat服务器也是无法到达的,而是用PM2的fork模式则正常工作,提示内部代理错误,而我们是没有做任何代理的,后来换了个环境测试PM2的cluster和fork模式则正常工作
2 min read
By
myfreax
公司服务在是使用PM2的cluster模式启动node应用时,Node总是返回500 Internal Privoxy Error
内部服务器错误,并且node的代码请求远程的后台tomcat服务器也是无法到达的,而是用PM2的fork模式则正常工作,提示内部代理错误,而我们是没有做任何代理的,后来换了个环境测试PM2的cluster和fork模式则正常工作,因此大慨可以猜测到原因有以下几个:
- 环境变量造成的问题(代理错误)
- PM2的cluster和fork模式网络的工作方式不一样
接下来我们就是换个环境测试,发现在不同的环境是可以正常工作的,因此可以确定很大一部分的原因是由于环境问题造成,因此我们在线上把整个环境重新安装一次,此时则发现一个更为严重的问题--PM2某个文件总是使用node 0.12版本的路径,而这个版本是不存在服务器中的,又折腾一把
原因
这么多问题,其实都是由于PM2的缓存问题造成的,PM2的会扫描系统环境变量并且保存下来,这样就不用每次都去扫描一次系统环境变量,在这里解释一下代理错误的问题,因为之前同事设置代理的环境变量,从而造成PM2直接走代理
清除缓存
sudo rm -rf ~/.pm2
清除缓存后可以正常启动
无法解释的问题
fork模式没有受到代理环境变量的影响,cluster则读取环境变量的参数