502 bad gateway通常出现在Nginx服务器中,其中造成的原因也比较多样性,其中对用户访问请求的响应超时造成的情况最为常见,那么502 Bad Gateway该怎么解决呢,下面我们就分情况介绍一下502 Bad Gateway的主要原因与解决方法。
什么是502 bad gateway 报错
简单来说 502 是报错类型代码 bad gateway 错误的网关。是Web服务器作为网关或代理服务器时收到无效的响应。 用我们的口语说就是运行网站的服务器暂时挂了(不响应)。
产生错误的原因
1.连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错
2.Nginx本身设置等cgi接口返回的数据延时太短,要延长这个时间。如同前面说的,很多情况下并非Nginx本身的问题,这样操作后常常并不能缓解问题。
此时,就要考虑对应cgi接口的配置,比如 php-fpm.conf 的配置,脚本执行时间的超时情况限制。这可以通过跟踪php-fpm的 slow log 来排查,对相关代码优化,减少延时。
3.另外很大的问题在MySQL数据库这一块,如果数据库执行命令超时也会大延长php脚本的执行时间,导致 Nginx 等待超时。可以my.cnf的 slow log进行确认效能低下的sql语句是哪些,进行优化配置。
502 bad gateway解决方法
普通访客
一般情况下稍候访问或者按下快捷键 ctrl+F5强制刷新一下,这样就是重新向服务器发送请求了。再或者清理一下电脑的缓冲文件.(如果一直都是这样,我们就只能等管理员来解决)
管理员
1.查看当前的PHP FastCGI进程数是否够用
netstat -anpo | grep "php-cgi" | wc -l
如果实际使用的"FastCGI进程数"接近预设的"FastCGI进程数",那么,说明"FastCGI进程数"不够用,需要增大。
2.部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间。
其他方法:
1.提高 Web 服务器的响应速度,也即减少内部的调用关系,可以把需要的页面、素材或数据,缓存在内存中,可以是专门的缓存服务器 ,也可以Web服务器自身的缓存,提高响应速度;
2.网络带宽的问题,则对传输的数据包进行压缩处理,或者向IDC申请增加带宽;
3.属于内部网络的故障或设置问题,也即内部网络拥塞,可能内部存在大量的数据调用或交互造成的,则需要优化内部网络传输或协议;
4.数据库的数据读取造成前端服务器 ,响应用户的请求变慢,那么必须提高数据库的处理能力,若是只读业务可以增加数据缓存的模式 或者增加数据库备机,分散读压力;
本文出自Hostspace(中国)编辑部编辑,如果转载,希望能注明来源