中文解释
"Bad Gateway" 百度翻译是错误的网关,专业解释是 Web 服务器作为网关或代理服务器时收到无效的响应。
图片来源 http://server.zzidc.com/fwqcjwt/729.html
产生原因
客户端向服务器发送的请求数量超过了服务器的处理能力,导致服务器无法给于正常的响应。
解决措施
- 客户端
一般情况下我们只需等待片刻再访问或者使用快捷键 ctrl+F5(mac 用户 cmd+R) 强制刷新一下,重新向服务器发送请求或者清理一下电脑的缓冲文件。(如果还是出现同样的问题,那我们就只能依赖服务端处理了) - 服务端
服务端出现这种情况就会稍微复杂一些,可能是由多种原因导致,这就需要我们逐个进行排查了-
查看服务器当前的 PHP FastCGI 进程数是否够用;
ps -fe | grep "php-fpm" | grep "pool" | wc -l
如果实际使用的 "FastCGI 进程数" 接近预设的 "FastCGI 进程数",那么说明 "FastCGI 进程数" 不够用,需要增大;
-
部分 PHP 程序的执行时间超过了 Nginx 的等待时间,可以在 nginx.conf 配置文件中适当增加 FastCGI 的 timeout 时间;
..... http { ...... fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; ...... } ......
-
同样在 PHP 初始化配置文件 php.ini 中,配置参数 memory_limit 的值设置低了会导致 PHP 的内存不足,也可能会出错,可以适当的增加配置文件中 memory_limit 的值;
-
提高 Web 服务器的响应速度,也即减少内部的调用关系。可以把需要的页面、素材或数据缓存在内存中,可以是专门的缓存服务器;也可以是 Web 服务器自身的缓存,来提高响应速度;
-
如果诊断是网络带宽的问题,那么可以对传输的数据包进行压缩处理,或者向 IDC 服务商申请增加带宽;
-
内部网络的故障或设置问题,也即内部网络拥塞,可能是内部存在大量的数据调用或交互造成的,则需要优化内部网络传输或协议;
-
数据库的数据读取造成前端服务器响应用户的请求变慢,那就必须提高数据库的处理能力。若是只读业务可以增加数据缓存或者增加数据库备机,分散读压力;
-
总结
综上所述,在一般的情况下,网站打不开,出现错误代码 “502 Bad Gateway”,极有可能是 php-cgi 进程数不够用、php 脚本执行时间过长或者是 php-cgi 进程死掉导致的。如果你也遇到同样的问题,可以尝试下先从这几个方面着手。
引用:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于