服务器nginx报错502解决方法分享(nginx报502错误)

admin1533056年前0条评论

http申请流程:失常状况下,提交消息申请的时刻,nginx会间接把申请转交给php-fpm,而php-fpm再调配php-cgi进程来解决相干的申请,以后再顺序返回,最后由nginx把效果反应给客户端浏览器。

Nginx502BadGateway同伴是FastCGI有问题

解决设施

遇到502问题,能够优先思考遵循下列两个步调去解决。

一、检察以后的PHPFastCGI进程数是否够用(max_children值)

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

如果实践应用的“FastCGI进程数”亲近预设的“FastCGI进程数”,那末,说明“FastCGI进程数”不足用,需要增年夜。

二、整体PHP程序的实行时日高出了Nginx的等待时日(php内存有余)

增加nginx.conf配置文件中FastCGI的timeout时日,比方:

fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;

php.ini中的memory_limit=64M,重启nginx。

如果如许修改了还解决不了问题,能够参考下面这些计划:

三、max-children以及max-requests

一台效劳器上运行着nginxphp(fpm)xcache,访问量日均300Wpv左右

最近经常会浮现如许的状况:php页面关上很慢,cpu应用率突然降至很低,系统负载突然升至很高,检察网卡的流量,也会发明突然降到了很低。这种状况只连续数秒钟就复原了

检察php-fpm的日志文件发明了一些线索:

Sep3008:32:23.289973[NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200,cur:51200Sep3008:32:23.290212[NOTICE] fpm_sockets_init_main(), line 371:using inherited socket fd=10,“127.0.0.1:9000″Sep3008:32:23.290342[NOTICE] fpm_event_init_main(), line 109: libevent:using epollSep3008:32:23.296426[NOTICE] fpm_init(), line 47: fpm is running, pid 30587

在这多少句的前面,是1000多行的敞开children以及开启children的日志

本来,php-fpm有一个参数max_requests,该参数指清晰,每一个children至多解决多少个申请后便会被敞开,默认的配置是500。因为php是把申请轮询给每一个children,在年夜流量下,每一个childre到达max_requests所用的时日都差未多少,如许就形成所有的children基础上在统临时日被敞开。

在这时代,nginx无奈将php文件转交给php-fpm解决,以是cpu会降至很低(不用处理php,更不用实行sql),而负载会升至很高(敞开以及开启children、nginx等待php-fpm),网卡流量也降至很低(nginx无奈天生数据传输给客户端)

增加children的数目,而且将max_requests配置未0或者一个对于比年夜的值:

关上/usr/local/php/etc/php-fpm.conf

调年夜下列两个参数(依据效劳器实践状况,过年夜也不可)

5120600

而后重启php-fpm。

五、增加缓冲区容量巨细

将nginx的errorlog关上,发明“pstreamsenttoobigheaderwhilereadingresponseheaderfromupstream”如许的同伴提醒。查阅了一下资料,年夜意是nginx缓冲区有一个bug形成的,咱们网站的页面消耗占用缓冲区能够过年夜。参考老外写的修改设施增加了缓冲区容量巨细配置,502问题齐全解决。起初系统治理员又对于参数做了调解只生存了2个配置参数:clientheadbuffer,fastcgibuffersize。

六、request_terminate_timeout

如果首如果在一些post或者数据库操纵的时刻浮现502这种状况,而不是在动态页面操纵中罕见,那末能够检察一下php-fpm.conf配置中的一项:request_terminate_timeout

这个值是max_execution_time,便是fast-cgi的实行剧本时日。

0s为敞开,便是有限实行上来。(当时装的时刻没仔细看就改了一个数字)

优化fastcgi中,还能够改改这个值5s看看效果。

php-cgi进程数不足用、php实行时日长、或者是php-cgi进程去世失落,都会浮现502同伴。

扩年夜知识:

Nginx502BadGateway的含意是申请的PHP-CGI已经实行,然而因为某种原因(失常是读取资本的问题)不实行完毕而以致PHP-CGI进程停止,失常来说Nginx502BadGateway以及php-fpm.conf的配置无关。

php-fpm.conf有两个相当主要的参数,一个是max_children,另一个是request_terminate_timeout,然而这个值不是通用的,而是需要自身盘算的。在布置好应用进程中浮现502问题,失常是因为默认php-cgi进程是5个,能够因为php-cgi进程不足用而形成502,需要修改/usr/local/php/etc/php-fpm.conf将其中的max_children值适量增加。

盘算的形式下列:

如果你的效劳器性能充足好,且宽带资本充足充足,PHP剧本不系循环或者BUG的话你能够间接将request_terminate_timeout配置成0s。0s的含意是让PHP-CGI一直实行上来而没偶然日限制。而如果你做不到这一点,也就是说你的PHP-CGI能够浮现某个BUG,或者你的宽带不足充足或者其余的原因以致你的PHP-CGI假去世那末就发起你给request_terminate_timeout赋一个值,这个值能够依据效劳器的性能停止设定。失常来说性能越好你能够配置越高,20分钟-30分钟都能够。而max_children这个值又是怎么盘算进去的呢?这个值准则上是越年夜越好,php-cgi的进程多了就会解决的很快,排队的申请就会很少。配置max_children也需要依据效劳器的性能停止设定,失常来说一台效劳器失常状况下每一个php-cgi所消耗的内存在20M左右。

遵循民间的谜底,排查了相干的能够,并联合了网友的谜底,患上出了下面的解决设施。

一、检察phpfastcgi的进程数(max_children值)

 netstat -anpo | grep “php-cgi” | wc -l 

5(倘若显示5)

二、检察当退却程

top考察fastcgi进程数,倘若应用的进程数即是或者高于5个,说明需要增加(依据你机器实践状态而定)

三、调解/usr/local/php/etc/php-fpm.conf的相干配置

 1060s 
你可能想看:

本文链接:https://addon.ciliseo.com/fu-wu-qi-nginx-bao-cuo-502-jie-jue-fang-fa-fen-xiang.html

报错解决方法服务器nginx进程你的缓冲区参数时间很低问题降至性能方法
时间时间计算器时间短怎么才能治得好时间短怎么调理回来时间窗时间显示大屏时间校准时间继电器的符号及图形时间静止时间过的太快的经典句子时间校准北京时间显示时间计算天数计算器时间悖论时间戳时间显示时分秒在线时间计算器在线计算天数时间计算时间都去哪了时间秒表时间轴你的婚礼你的名字你的婚礼免费观看完整版你的颜色你的谎言也动听你的婚礼电影完整版免费播放你的样子你的欲梦你的拼音你的错误你的尺寸太大了你的婚礼电影免费完整版在线观看你的雪人能活多久by稚楚你的雪人能活多久by稚楚笔趣阁你的婚礼在线观看完整版电影你的名字在线观看完整版免费高清你的影月月你的盐我的醋你的名字线上看你的爱不离不弃方法的英文方法论方法总比困难多方法的拼音方法学验证的内容包括哪些方法总比困难多的前一句方法英文单词方法论三要素方法论是什么意思方法派方法论是什么方法是保护人身安全的最后一道防线方法的近义词方法英文方法论和实践论方法检出限方法标准方法学验证指导原则2020方法英文方法论英文方法4方法演技方法重载方法inenglish问题的英文问题少年学校管教机构哪家正规问题大全问题清单问题英语怎么读问题整改清单及整改措施情况问题查摆清单及整改措施问题儿童都来自异界问题的拼音问题学生是我的相亲对象问题清单及整改台账问题清单及整改措施问题清单及整改措施2024问题解决型对策表前四项的先后顺序依次是问题查摆清单及整改措施2024问题图片问题导向问题台账及整改措施表问题英文问题王子问题住宅问题意识问题在经济根子在政治问题的关键是找到关键的问题服务器是什么服务器租用平台服务器租用多少钱一年服务器繁忙请稍后再试什么意思服务器品牌前十大排名服务器下载安装服务器回收服务器异常怎么解决服务器错误是怎么回事服务器的作用和用途服务器登录入口

网友评论

扫一扫二维码添加客服微信

关于我们建站招商建站服务