开发者社区> 问答> 正文

网站经常出现502BadGateway

用了三台阿里云服务器,配置都非常高。其中A和B组成SLB(两台都是装的Apache),服务器C为mysql服务器。

最近网站经常出现如下错误:


502 Bad Gateway


The proxy server received an invalid response from an upstream server. Sorry for the inconvenience.
Please report this message and include the following information to us.
Thank you very much!

URL:http://www.xxxx.com/
Server:lb-130114ay41d-11
Date:2013/05/16 20:00:29


这个问题出现很长时间了,一直没有解决,请问谁有类似的问题,最后怎么解决的???谢谢!!!

展开
收起
likelike 2013-05-16 19:03:56 39856 0
4 条回答
写回答
取消 提交回答
  • 楼主的问题初步判断是健康检查配置不正确导致的。7层健康检查的机制是:SLB系统默认通过ECS的内网IP和端口进行健康检查,如果后端ECS的80端口是关闭的,那么将视为健康检查失败而不向后端转发请求。所以,首先请客户确认后端服务器端口是否开启,另,7层健康检查默认是检查web server的缺省首页(最好为静态页,如果不在根目录下需要填写正确的URI),请客户确认用来进行健康检查的页面是否可以正常访问。如果后端限定了必须通过域名才能访问,那么需要在配置健康检查时在域名项中填写该域名。

    -------------------------

    针对如上的配置(其实是缺省配置),就需要保证:
    1.通过ECS内网IP能够访问到web server的缺省首页,比如:index.html
    2.web server必须有缺省首页用来做健康检查,最好是静态页面,如上
    3.web server不能配置为限定域名访问,如果限定了某个域名才能访问,比如:www.a.com,那么这个域名需要填写到如上配置窗口的域名框中,这样SLB系统的健康检查将不会通过ECS的内网IP进行,而是通过你设定的这个域名进行,比如:www.a.com/index.html
    4.如果没有设置缺省首页,想制定其他的专门用来进行健康检查的页面,那么需要将该页面的URI填写到如上图所示配置窗口的检查路径下
    5.如果健康端口为空,那么默认将通过你配置的80端口进行访问
    6.7层健康检查只对用来进行健康检查的页面头文件进行访问,一旦返回200 OK,则视为健康检查成功,否则视为失败

    -------------------------

    这3个选项填写与否不会影响到健康检查的进行。是否填写,如何填写,填写什么完全依赖于你后端web server的具体配置,如我之前的回复所示,还请了解。

    2013-05-17 10:29:08
    赞同 展开评论 打赏
  • 回2楼牛逼王的帖子
    谢谢你的回复!!!
    我没有用nginx,用的apache,自己编译安装的,没有用一键安装包。

    -------------------------

    回3楼enj0y的帖子
    出现502错误的时候,健康检查状态是80:异常,此时直接访问我两台服务器外网IP也不能打开网站。

    -------------------------

    Re网站经常出现502BadGateway
    还是没有解决,昨天下午五点到六点多一直出现这样的问题!

    -------------------------

    回7楼billlee的帖子
    谢谢!
    下面是我的健康检查配置:

    -------------------------

    回9楼billlee的帖子
    感谢billlee的回复,如上图所示,域名、检查端口、检查路径这三个选项,填写和不填写有什么区别吗??是不是填写后会更加利于健康检查呢?
    2013-05-16 19:30:57
    赞同 展开评论 打赏



    1. 目前lnmp一键安装包比较多的问题就是502 BadGateway,大部分情况下原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。解决办法:可以尝试根据lnmp一键安装包中的脚本手动安装一下,看看是什么错误导致的。
    2. 在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 BadGateway
    3. 在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf将其中的max_children值适当增加。
    4. php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time改为300
    5. 磁盘空间不足,如mysql日志占用大量空间
    6. 查看php-cgi进程是否在运行
    7. Nginx 502 BadGateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止,一般来说Nginx 502Bad Gateway和php-fpm.conf的设置有关。php-fpm.conf有两个至关重要的参数,一个是max_children,另一个是request_terminate_timeout,但是这个值不是通用的,而是需要自己计算的。在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf将其中的max_children值适当增加。
    2013-05-16 19:21:59
    赞同 展开评论 打赏
  • 缓存HTML,不要全部走proxy

    -------------------------

    额  这是SLb啊,502可能是:
    1.你后端在此时已经挂了(80请求超时或者连接失败);
    2.此时内网不通。
    3.其他原因

    2013-05-16 19:13:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载