服务器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

时间: 2024-10-17 00:10:57

服务器502错误的相关文章

nginx 502 错误

今天帮朋友处理一个程序报错,重启nginx服务之后,发现首页打不开了,但是静态文件可以打开 经检查nginx 服务器正常运行,重启无数次仍然502错误,考虑到静态文件可以打开,怀疑可能是php 脚本程序没有正常运行,运势 ps -aux |grep php-fpm 没有相关进程,进一步产看网络链接状态 netstat -anpo |grep 9000 仍没有内容,可以断定是php-fpm问题,启动该进程,我的安装目录在usr/local/nginx/php/php-fpm ./sbin/php-

源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题

最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持openssl, 支持curl, 网上找了好多资料, 都没解决. [[email protected] ~]# php -V Failed loading /usr/local/zend/ZendOptimizer.so: /usr/local/zend/ZendOptimizer.so: undefi

源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)

最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持openssl, 支持curl, 网上找了好多资料, 都没解决. [plain] view plain copy [[email protected] ~]# php -V Failed loading /usr/local/zend/ZendOptimizer.so:  /usr/local/zend

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

1. 题目 服务器上跑的是 LNMP 环境,近期总是有502现象.502为网站访问的状态码,200正常,502错误是Nginx最普遍常见的错误状态码.由于502错误码只是暂时的,并且只要重启 php-fpm 服务则502消失,但不重启的话,则会一直持续很长一段时间.所以,有必要写一个监控脚本,监控访问日志的状态码,一旦发生502,则自动重启一下 php-fpm 服务. 设定: 1) Nginx 的 access_log 在 /data/logs/nginx/access.log 2) 脚本死循环

nginx排查502错误

排查502错误1.查看/usr/local/nginx/conf/nginx.conf从而知道其错误日志在哪.重点查看其错误日志.2.如果是/tmp/dd.sock2017/05/01 18:48:33 [error] 2015#0: *1 access forbidden by rule, client: 192.168.81.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168

关闭服务器HTTPERR错误日志

远程登录服务器后,发现服务器的C盘满了,我感觉奇怪,记得我已经把日志移动到D盘了,怎么C盘容量还在不断减少,不断排查,发现 C:\WINDOWS\system32\LogFiles\HTTPERR 目录下有大量log文件,占用了大量空间,C盘满的原因就是这个目录的文件引起的. 默认情况下,Windows 2003服务器会把所有IIS访问错误的记录写入该目录下的 log 文件中,如果访问量比较大,可能一段时间后,日志文件就会占满C盘空间,导致服务器死机. 关闭HTTPERR目录日志文件的方法是:运

Windows无法启动SQL server 代理服务(服务器)错误1067:进程意外终止

Windows无法启动SQL server 代理服务(服务器)错误1067:进程意外终止 解决办法: 将关联的sql server(实例) 服务停止. 然后启动sql server代理 服务.

C# FTP远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)

今天用代码删除FTP服务器上的目录时候,报错:远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件). 习惯性的google,不外乎以下几点: 1.URL路径不对,看看有没有多加空格,或者大小写问题 2.权限是否足 3.需要反复连接的时候,如GetFileList,需要递归获得所有文件,keepAlive则设成false,一个查询请求完了后就关闭. 照做后问题依旧,很苦恼! 然后在FTP上建立了一个空目录,删除之,竟然能删除了.... 所以,找到原因:删除目录,该目录下不能

NuGet在Push的时候提示“远程服务器返回错误:(403)已禁用”问题解决

在使用NuGet把包push到nuget官网的时候,提示了如下信息: Failed to process request. 'The specified API key is invalid or does not have permission to access the specified package.' 远程服务器返回错误:(403)已禁用 解决方法: 1.检查是否已经设置过apikey,可以使用设置apikey的命令设置一下,在进行push,如果在设置的时候有错误提示,可以尝试使用管