nginx + php 突现502
现在web站点的大部分都是nginx+php-fpm的构架,在工作中我的Api突然出现502这样的错误,而且一直打不通,刚开始我以为是我的代码有bug,
不过在检查之后,发现代码是对的,然后就开始找nginx的“麻烦”了,然后就是各种查看nginx信息。 以下信息摘自网络:
502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时
查看当前的PHP FastCGI进程数是否够用:
|
|
如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
部分PHP程序的执行时间超过了Nginx的等待时间
可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
|
|
php.ini
中memory_limit
设低了会出错,修改了php.ini
的memory_limit
为64M,重启nginx
,发现好了,原来是PHP的内存不足了。
我将我搜索到的资源贴出来吧Nginx 502错误触发条件与解决办法汇总,网上有很多类似的解决方法,其实大同小异,但是我在查看完这些东西之后,发现我的问题还是没有解决,然后就向我的组长咨询了一下,他给我的建议是先查看日志,PHP-fpm日志中显示
|
|
经过调试发现是Opcache
的问题,应该是Opcache
导致的内存不足,随即将10-opcache.ini
文件中的opcache.enable
设置为0以便我的环境可以正常工作。
注:Opcache是PHP的一个加速组件,可以将PHP解析的代码缓存下来,但是缓存过大,也会影响整个站点的访问。