nginx,php-cginginx 部署php环境后,出现502错误,怎么办

2061人阅读
网站后台(5)
1,nginx error 找不到位置 一般需要修改/usr/local/nginx/conf/nginx.conf(慎重修改 有可能引起其他网站问题)
2,502 error
情况1: nginx 挂掉:
命令:/usr/local/nginx/sbin/nginx-s reload
之后等待一会儿
情况2:php 挂掉:
首先需要修改/usr/local/php-5.6.0/etc/php-fpm.conf文件中的参数 具体修改哪个修改到多少要不断尝试
然后利用以下的命令中的一条或几条重启配置/usr/local/php-5.6.0/sbin/php-fpm reload
/usr/local/php-5.6.0/sbin/php-fpm
/usr/local/php-5.6.0/sbin/php-fpm -h
/usr/local/php-5.6.0/sbin/php-fpm–t
/usr/local/php-5.6.0/sbin/php-fpm–R
最后重启nginx 之后等待一会儿
如果上面方法不好用 那么可以尝试下面的
1.php-fpm进程数不够用
使用 netstat -napo |grep &php-fpm& | wc -l 查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。
但也不能无休止调高,可以根据服务器内存情况,可以把php-fpm子进程数调到100或以上,在4G内存的服务器上200就可以。
2.&调高调高linux内核打开文件数量
可以使用这些命令(必须是root帐号)
echo 'ulimit -HSn 65536' && /etc/profile
echo 'ulimit -HSn 65536' && /etc/rc.local
source /etc/profile
&3.脚本执行时间超时
如果脚本因为某种原因长时间等待不返回 ,导致新来的请求不能得到处理,可以适当调小如下配置。
nginx.conf里面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf里如要是如下
request_terminate_timeout = 10s
4.缓存设置比较小
修改或增加配置到nginx.conf
proxy_buffer_size 64k;
proxy_buffers& 512k;
proxy_busy_buffers_size 128k;
5.&recv() failed (104: Connection reset by peer) while reading response header from upstream
可能的原因机房网络丢包或者机房有硬件防火墙禁止访问该域名
但最重要的是程序里要设置好超时,不要使用php-fpm的request_terminate_timeout,
最好设成request_terminate_timeout=0;
因为这个参数会直接杀掉php进程,然后重启php进程,这样前端nginx就会返回104: Connection reset by peer。这个过程是很慢,总体感觉就是网站很卡。
May 01 10:50:58.044162 [WARNING] [pool www] child 4074, script '/usr/local/nginx/html/quancha/sameip/detail.php' execution timed out (15.129933 sec), terminating
May 01 10:50:58.045725 [WARNING] [pool www] child 4074 exited on signal 15 SIGTERM after 90.227060 seconds from start
May 01 10:50:58.046818 [NOTICE] [pool www] child 4082 started
说一千道一万最重要的就是程序里控制好超时,gethostbyname、curl、file_get_contents等函数的都要设置超时时间。
另一个就是多说,这个东西是增加了网站的交互性,但是使用的多了反应就慢了,如果你网站超时且使用了多说是,可以关闭它。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:39468次
排名:千里之外
原创:18篇
转载:18篇
(1)(1)(5)(1)(1)(2)(2)(8)(1)(7)(6)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'nginx+php-fpm出现502(Bad Gateway)错误分析_百度经验
&&&&&&互联网nginx+php-fpm出现502(Bad Gateway)错误分析听语音
百度经验:nginx+php-fpm出现502(Bad Gateway)错误的分析与解决百度经验:1买了一台云服务器后,系统自动给安装了nginx 1.6 + php 5.3.28 + mysql 5.5把PHP程序放进云服务器后,首次测试程序访问正常,速度正常但是把程序放到线上访问后,会逐步发现,访问的PHP页面越来越慢,最后直接出现502 bad gateway问题。(在php-fpm.conf中,原本就设置了 pm = static 模式,并设置 pm.max_children = 128)分析:lamp兄弟连打开nginx访问日志,访问量并不高,平均每秒也就10个不到的请求IP,所以,按理,这点访问量,不可能导致出现PHP请求过多,出现502的。打开php-fpm.conf日志,出现很多PHP警告问题,再调整php-fpm的pm模式为pm = dynamic,pm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 35pm.max_requests = 10000重启php-fpm后,用ps查看php进程:ps -ef |grep -c php-fpm&&& 22刚开始,访问PHP很快,然后越来越慢,再次查看进程ps -ef |grep -c php-fpm&&& 28从日志和进程变化来看,可以断定是PHP程序出现的问题,是PHP请求太多造成的。大概就是PHP页面中,调用了太多PHP的请求。把这个问题告诉开发后,开发解决之后,服务器再没出现502。END经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。投票(4)已投票(4)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验19716395510热门杂志第1期你不知道的iPad技巧3615次分享第1期win7电脑那些事6334次分享第2期新人玩转百度经验1280次分享第1期Win8.1实用小技巧2586次分享第1期小白装大神1786次分享◆请扫描分享到朋友圈本文讲的是Nginx环境php-fpm出现502解决办法和调优心得,
这几天web经常出现Nginx 502的问题,先开始也像很多人一样认为是Nginx的问题,从网上查了查原来是php-fpm在作怪。
web使用的是nginx+php的架构,网站上线还没多久,所以优化方面基本只是做了些初始的配置
这几天web经常出现Nginx 502的问题,先开始也像很多人一样认为是Nginx的问题,从网上查了查原来是php-fpm在作怪。
web使用的是nginx+php的架构,网站上线还没多久,所以优化方面基本只是做了些初始的配置。
查看php-fpm.log发现有警告,这些警告和网站的挂了个时间基本吻合。我就从这里开始入手。
先开始也是找了些,但是第二天还是出现问题。后来查看配置文件并翻译了下(百度),英文底子不好。pm模块类似apache的模块,是分静态和动态的。
网上说的很多调整都是基于动态居多,但是并没说么定义这个模块。所以大家用动态和静态还是要仔细看看配置文件(/usr/local/php/etc/php-fpm.conf)
pm = static
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 300
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;pm.start_servers = 50
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
;pm.min_spare_servers = 20
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
;pm.max_spare_servers = 500
; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
pm.process_idle_timeout = 10s;
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
pm.max_requests = 10240
红色字段就是定义方式的,定义好这个再去根据服务器情况设置参数
假如使用静态 pm.max_children这个参数会起作用,其余不会。动态反之。
2G内存pm.max_children大概开启50左右,按照实际情况来调优,这个是很必要的。
1.php-fpm进程数不够用
使用 netstat -napo |grep "php-fpm" | wc -l 查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。
但也不能无休止调高,可以根据服务器内存情况,可以把php-fpm子进程数调到100或以上,在4G内存的服务器上200就可以。
2. 调高调高linux内核打开文件数量
可以使用这些命令(必须是root帐号)
echo 'ulimit -HSn 65536' && /etc/profile
echo 'ulimit -HSn 65536' && /etc/rc.local
source /etc/profile
3.脚本执行时间超时
如果脚本因为某种原因长时间等待不返回 ,导致新来的请求不能得到处理,可以适当调小如下配置。
nginx.conf里面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf里如要是如下
request_terminate_timeout = 10s
4.缓存设置比较小
修改或增加配置到nginx.conf
proxy_buffer_size 64k;
proxy_buffers
proxy_busy_buffers_size 128k;
5. recv() failed (104: Connection reset by peer) while reading response header from upstream
可能的原因机房网络丢包或者机房有硬件防火墙禁止访问该域名
但最重要的是程序里要设置好超时,不要使用php-fpm的request_terminate_timeout,
最好设成request_terminate_timeout=0;
因为这个参数会直接杀掉php进程,然后重启php进程,这样前端nginx就会返回104: Connection reset by peer。这个过程是很慢,总体感觉就是网站很卡。
May 01 10:50:58.044162 [WARNING] [pool www] child 4074, script '/usr/local/nginx/html/quancha/sameip/detail.php' execution timed out (15.129933 sec), terminating
May 01 10:50:58.045725 [WARNING] [pool www] child 4074 exited on signal 15 SIGTERM after 90.227060 seconds from start
May 01 10:50:58.046818 [NOTICE] [pool www] child 4082 started
说一千道一万最重要的就是程序里控制好超时,gethostbyname、curl、file_get_contents等函数的都要设置超时时间。
另一个就是多说,这个东西是增加了网站的交互性,但是使用的多了反应就慢了,如果你网站超时且使用了多说是,可以关闭它。
如果哪里有不足希望大家提意见,502解决办法。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索内存
nginx php fpm 502、nginx 502 phpfpm、nginx 502 重启fpm、nginx fpm 502、phpfpm调优,以便于您获取更多的相关知识。
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供
云栖社区()为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!查看: 906|回复: 10
在Nginx+PHP+MYSQL 环境下运行Discuz经常会出现502错误,求解决...
在Nginx+PHP+MYSQL 环境下运行Discuz经常会出现502错误,求解决办法
(174.28 KB, 下载次数: 33)
15:26 上传
点击文件名下载附件
LOC也常出现502.这是好事儿
提示: 作者被禁止或删除 内容自动屏蔽
换Apache试试
换Apache估计会更惨。
楼主把 pm.max_children, pm.start_servers 或者 pm.min/max_spare_servers 调高再看看,需要根据具体情况来优化。
一般来说都是php-fpm有问题,在这里查看一下
进程监控吧 502了重启php-fpm
其实军哥的lnmp默认设置如果不改的话就是大坑。。。当然我不是喷军哥的脚本,我很尊敬军哥,不过他的脚本是要按照需求去改设置的,要不然并发大了很容易502
我也遇到过,后来一直没解决,然后换Windows,用的wamp,就没那个问题了。
换阿帕奇就没502错误了
Powered by

我要回帖

更多关于 nginx php 分开部署 的文章

 

随机推荐