502 Bad Gateway 什么意思,如何解决?

本贴最后更新于 1517 天前,其中的信息可能已经物是人非

中文解释

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

引用:

  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 588 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 491 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Tristana 1 赞同 1 评论
    作者

    文章提交到社区的时候,说是有外链,花了点时间解决了。

    👍
    Tristana