一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是nginx的问题,但事实上这是个误区。

NGINX 502 Bad Gateway错误是FastCGI有问题,造成nginx 502错误的可能性比较多。将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:

1.查看FastCGI进程是否已经启动NGINX 502错误的含义是sock、端口没被监听造成的。我们先检查fastcgi是否在运行

2.检查系统Fastcgi进程运行情况除了第一种情况,fastcgi进程数不够用、php执行时间长、或者是php-cgi进程死掉也可能造成nginx的502错误运行以下命令判断是否接近FastCGI进程,如果fastcgi进程数接近配置文件中设置的数值,表明worker进程数设置太少

netstat-anpo|grep"php-cgi"|wc-l

3.FastCGI执行时间过长根据实际情况调高以下参数值

fastcgi_connect_timeout300;

fastcgi_send_timeout300;

fastcgi_read_timeout300;

4.头部太大    nginx和apache一样,有前端缓冲限制,可以调整缓冲参数

fastcgi_buffer_size32k;

fastcgi_buffers832k;

如果你使用的是nginx的负载均衡Proxying,调整

proxy_buffer_size  16k;

proxy_buffers      416k;

5.https转发配置错误正确的配置方法

server_name

location/myproj/repos{

set$fixed_destination $http_destination;

if($http_destination~*^https(.*)$)

{

set$fixed_destination http$1;

}

proxy_set_headerHost$host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_headerDestination$fixed_destination;

proxy_pass

}

本文出自 V-ZONE,转载时请注明出处及相应链接。

本文永久链接:

一、查看php-cgi是否在运行

有时候由于网站流量过大或者其它原因,导致php-cgi直接down掉,所以我们得看php-cgi是否在运行。执行如下命令:

ps -A | grep php5-cgi

如果没有运行,手动启动

/etc/init.d/php_cgi start

如果你发现php-cgi不明原因有时候down掉,可以使用下面的脚本临时解决这个问题,添加到cronjob。

if ps aux | grep ‘php5-cgi’ | grep -v grep  > /dev/null ; then          echo "PHP-cgi is runnning !"      else          echo "PHP-cgi is down. Starting over…"          /etc/init.d/php-fcgi start  fi 二、fastcgi进程数不够用、php执行时间长的原因

fastcgi进程数可以修改php-fpm.conf中的max_children的数值,高峰时php-cgi耗掉的最大内存为20M,请根据自己的内存情况计算了。

限制php执行时间可以在php-fpm.conf中的request_terminate_timeout设置,这是为了防止php程序的bug导致php-cgi假死。

三、FastCGI执行时间过长

根据实际情况调高以下参数值

fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;

除了上面列出的三种情况,当然还会有其它原因,但上面三种情况是最常见的

最近几天发现网通线路的服务器出现流量不稳定的情况,具体的表现是,流量时而高,时而低,在流量低的时候发现系统的负载很小,几乎为0,但是过一会,负载又高上去,流量也上去,很是奇怪,查找了2天没有找到原因,后来看到一边文章,介绍了解决nginx出现502的错误现象,按照这个方法进行尝试,最终还是找到了问题的原因。

解决步骤如下:

1、查看当前的PHP FastCGI进程数是否够用

netstat -anpo | grep "php-cgi" | wc -l

如果实际使用的"FastCGI进程数"接近预设的"FastCGI进程数",那么,说明"FastCGI进程数"不够用,需要增大。

2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:

在做第一步的时候,系统当前的PHP FastCGI进程数明显超过了预设值的64这个数值,在电信的服务器上查看当前的PHP FastCGI进程数没有高于64这个数值,而且网通线路的活动连接明显高于电信的活动连接,准备到晚上的时候看看情况,结果到晚上22:30的时候,查看系统当前的PHP FastCGI进程数明显小于64预设值,当前的活动连接也比原来低很多,由此可以说明出现nginx不稳定的情况是由于服务器访问负载过大引起的,就是加上第二步的错误也不顶作用。

总结,php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。

java nginx报502,Nginx 502错误排查及解决办法相关推荐

  1. Java对接AD/LDAP的常见错误,以及解决办法

    1.[LDAP: error code 34 - 00000057: LdapErr: DSID-0C090B60, comment: Error processing name, data 0, v ...

  2. internet信息服务“出现错误,并非所有功能被成功更改” 或者win7 IIS7 安装失败 报状态为: 0x80070bc9错误 的 **终极解决办法!

    ** 因为SQL SERVER2005数据库不能附加到2000,因此卸载了2000,安装2005.然后问题来了,安装 IIS internet信息服务始终出现并非所有功能被成功更改.百 度了前辈提供的 ...

  3. nginx 502错误原因和解决办法总结

    nginx 502错误原因和解决办法总结 一.NGINX 502错误排查 二.Nginx 413错误的排查:修改上传文件大小限制 三.Nginx 400错误排查:HTTP头/Cookie过大 一.NG ...

  4. Nginx报错:nginx: [emerg] CreateFile() nginx.conf“ failed (3: The system cannot find the path specified

    windows下启动nginx报错: nginx: [emerg] CreateFile() "D:\桌面\nginx-1.12.0/conf/nginx.conf" failed ...

  5. Nginx服务器不支持PATH_INFO的问题及解决办法

    Nginx服务器不支持PATH_INFO的问题及解决办法 参考文章: (1)Nginx服务器不支持PATH_INFO的问题及解决办法 (2)https://www.cnblogs.com/echoso ...

  6. 安防智能视频平台EasyNVR无法接入EasyNVS并报错Login error的排查与解决

    在很多项目现场中,EasyNVR受到网络环境的多方面限制,所以我们推出了EasyNVS云管理平台,可以利用它突破用户现场网络的限制,在外网条件下获取内网EasyNVR的所有视频能力,并对EasyNVR ...

  7. Windows10 1903 应用商店错误 代码: 0x80131500 解决办法

    Windows10 1903 应用商店错误 代码: 0x80131500 解决办法 更新了1903后,惯例的进行了更新系统和更新应用,结果应用商店在更新自身后无法打开,尝试了网上常见的三个办法,重装商 ...

  8. apmserv mysql5.1启动失败_使用APMServ时出现“1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。”错误的终极解决办法:...

    使用APMServ时出现"1.Apache启动失败,请检查相关配置.√MySQL5.1已启动."错误的终极解决办法: from:http://www.hebei35.cn/blog ...

  9. 关于latex报错GPL Ghostscript 9.50的解决办法

    关于latex报错GPL Ghostscript 9.50的解决办法 1.问题描述 2.问题分析 3.问题解决 修改默认文件夹路径 4.这种解决方法的弊端 1.问题描述 在利用texstudio软件进 ...

  10. oracle安装出现2932,【案例】Oracle报错ORA-19815 fast_recovery_area无剩余空间解决办法...

    天萃荷净 运维DBA反映数据库出现宕机,alert日志报错ORA-19815,分析原因为归档日志满导致日志无法归档,提出fast_recovery_area无剩余空间解决办法 一.打开数据库报错ORA ...

最新文章

  1. VC中使用全局变量的2种办法及防错措施
  2. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
  3. 学用MVC4做网站五:5.1添加文章
  4. 音视频技术开发周刊 | 220
  5. 面试系列三 如何保证消息不被重复消费
  6. python自动拨号_Python自动连接ssh的方法
  7. 为什么我墙裂建议大家使用枚举来实现单例。
  8. NoSQL解决方案比较
  9. 选修课期末html作业,中南大学生命科学导论选修课期末作业
  10. mysql拼接字符串
  11. diabetes影响因子2017_瑞金医院创办Journal of Diabetes成为亚太地区影响因子最高的糖尿病学术期刊...
  12. css -- 背景图片自适应屏幕大小
  13. 企业级用户画像: 价格敏感度模型-PSM
  14. 入门爬虫二三记(一):爬取酷狗音乐榜单Top500
  15. [C++]判断齐次坐标系中三点是否共线(三个向量是否共面)
  16. UDIMM和RDIMM内存条区别
  17. sqlite 简明教程
  18. 常用的Sql命令之alter
  19. 【腾讯云新知实验室】一站式提供视频解决方案
  20. 深圳市林享科技有限公司

热门文章

  1. 本地可以ping远程的服务器,但服务器不能ping本地
  2. 移动警务整体解决方案_辅助或替代人类的技术无法解决警务问题
  3. 三菱PLC基础知识 辅助继电器M
  4. 静态文件托管服务器,幽默:如何在静态文件托管服务器上使用数据库?
  5. 李时珍食物疗法150条 百年难遇的养生千古名方
  6. python存钱程序_Python基础(六) 52周存钱demo
  7. linux关闭firefox进程,Firefox 68+ 怎样关闭多进程
  8. 设备状态监测系统提升企业设备管理水平
  9. python 哈希_python实现哈希集合
  10. 后台登录管理员数据表创建