服务器502错误

Posted 梦忘川

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器502错误相关的知识,希望对你有一定的参考价值。


502错误解决办法总结:
       通常错误原因只分两方面:1.环境初始化的时候。2.某次修改代码之后出现502错误。不管是那种首先必须确认代码没有问题!
       针对问题1,通过查询服务器错误日志、php-fpm错误日志、以及其它各种错误日志。根据问题修改服务器配置、PHP.ini配置等方式解决,如上面前5条说明
       针对问题2,必然是通过代码排查找寻代码错误,如6、7条记录


1. 2014/08/02 16:14:31 [error] 17029#0: *17941 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 210.61.12.2, server: blog.lixiphp.com, request: “POST /api/1.0 HTTP/1.1″, upstream: “fastcgi://127.0.0.1:9000″, host: “blog.lixiphp.com”
       php程序执行时间超过php-fpm.conf 中 request_terminate_timeout = 300;设置的值,然后php-fpm进程立即退出,
       此时nginx得不到php-fpm进程的正确结果,响应502
       解决:php-fpm.conf 的 request_terminate_timeout,最好设成 request_terminate_timeout=0;不限制超时

2. 报错: Nginx uwsgi (104: Connection reset by peer) while reading response header from upstream
       说 uwsgi配置中 buffer-size 太小导致的这个问题,默认大小为4096 改大就好 比如:buffer-size=65535
       参考: https://stackoverflow.com/questions/22697584/nginx-uwsgi-104-connection-reset-by-peer-while-reading-response-header-from-u
       我也不知道\'uwsgi\'是什么东西,不知道配置在哪修改,希望有知道在评论中简单分享一下这两个问题。。

3. php-fpm进程数量来不及处理
       解决方法: 增大php-fpm进程数

4. 因为每个php-fpm在处理一定数量请求后自动stop,然后create new php-fpm
       解决方法: 改pm.max_requests限制

5. 超过PHP执行时间

       在php.ini和php-fpm.conf中分别有这样两个配置项:max_execution_time 和 request_terminate_timeout 。
       这两项都是用来配置一个PHP脚本的最大执行时间的。当超过这个时间时,PHP-FPM不只会终止脚本的执行,
       还会终止执行脚本的Worker进程。所以Nginx会发现与自己通信的连接断掉了,就会返回给客户端502错误。

6. 代码错误 看到有一个前辈是 ip2long() ip转换时出错的
       查看PHP-fpm日志,发现php-fpm疯狂终止,终端执行\'dmesg\'(看不懂里面是什么),
       总之是因为代码原因导致产生 502 问题。
       博客: https://www.cnblogs.com/sixiong/p/7048135.html

       另一博客说查看php-fpm的错误log,发现 php worker 进程频繁地挂掉和拉起
       原因是没有对redis的pconnect的返回值做判断,然后直接lpush,导致php worker进程直接core掉。
       http://www.linuxidc.com/Linux/2012-11/75149.htm

7. 最终我的问题还是因为代码的原因,所以发现这个问题第一时间检查自己代码是哪里出现了问题。
       查各种错误日志,一步一步跟代码,(本博客中有一些关于错误日志记录的方法,不了解朋友可以参考下php调试法记录
       然而在我的问题中,错误日志也不能找到是什么原因,只有上面那种错误提示。
       好在我是通过git提交的,之前的版本是没有问题的,然后就还原版本,肯定是最近几个版本导致的,终于找到了错误的代码。

 


    nginx常见参数错误总结: http://www.360doc.com/content/12/1024/11/1073512_243439687.shtml
    Nginx使用教程(四):提高Nginx网络吞吐量之buffers优化 部分各种参数说明 https://www.cnblogs.com/felixzh/p/6283822.html

 

以上是关于服务器502错误的主要内容,如果未能解决你的问题,请参考以下文章

ChefServer - 服务器返回错误 502

502错误

502错误和504错误

无法解决 Azure 应用服务中的 (502) 错误网关错误

502 网关和 codeigniter/nginx/apache 错误。代码或服务器问题?

shell 练习(08)——Nginx 502 错误检查处理