nginx服务器显示502 bad gateway错误是什么原因引起的
502的错误主要问题是服务器处理不过来了
根据错误信息可以判定是后端的问题,502错误的原因有很多种,主要有:
1、nginx进程处理的连接数不够用,单个进程处理的连接数超过了nginx.conf配置的worker_connections值
通常worker_connections的值可以参考单个进程打开的最大连接数,命令为:ulimit -n
ulimit -a 查看所有限制参数
当前最大打开文件数:65535,可以设置worker_connections为51200
重启nginx nginx -s reload
2、pm.max_children不够用,说明php-fpm最大进程数太小,查看php配置文件ww.conf,修改改参数pm.max_children=100
php-fpm主要调整几个参数
pm = dynamic 如何控制子进程,选项有static和dynamic
pm.max_children:静态方式下开启的php-fpm进程数量
pm.max_requests:php-fpm子进程能处理的最大请求数
pm.start_servers:动态方式下的起始php-fpm进程数量
pm.min_spare_servers:动态方式下的最小php-fpm进程数
pm.max_spare_servers:动态方式下的最大php-fpm进程数量
那么pm.max_children,pm.max_spare_servers 多大合适?
这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。
设置”max_children” 也需要根据服务器的性能进行设定。
pm.start_servers缺省值计算公式: min_spare_servers + (max_spare_servers - min_spare_servers) / 2。
如果长时间没有得到处理的请求就会出现 504 Gateway Time-out 这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会
出现 502 Bad gateway 这个错误。
3、request_terminate_timeout 多大合适?
一般来说性能越好你可以设置越高,20分钟-30分钟都可以。这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。
4、页面自身问题。这一点是我搜索过所有网上资料都没谈到,但故障一直有,因尔特网络数据工程师发现的,就是你访问其他所有页
面都没问题,就唯独某一个或两个页面才提示这个错误,其实不是上面的原因,也不是网上其它人讲的某个后端错误,而是这一两个有提示
错误的页面代码里,含有敏感的关键词,曾经我们因尔特网络工程师维护机器那么多年了,各种错误都检查了没问题,就是不行,最后发现
原因居然出在这里,马上修改后就一切正常了。
因尔特网络数据中心 18年老牌idc服务商为你提供云主机、高防服务器、虚拟主机、域名、网站建设、APP制作、SSL证书等,欢迎咨询!