中文解释

"Bad Gateway" 百度翻译是错误的网关,专业解释是 Web 服务器作为网关或代理服务器时收到无效的响应。

502 Bad Gateway

图片来源 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 进程死掉导致的。如果你也遇到同样的问题,可以尝试下先从这几个方面着手。

引用:


标题:502 Bad Gateway 什么意思,如何解决?
作者:Tristana
地址:https://520tristana.com/articles/2018/06/01/1527811200204.html