很多新手刚开始做网站可能感觉不到502,504的问题,当等你网站到达了一定水平的时候,流量起来的时候,你会发现经常会遇到502、504类似的问题。

一、什么是502状态码?

502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

二、502 Bad Gateway 原因一般有哪些?

将请求提交给网关如php-fpm执行,但是由于某些原因没有执行完毕导致php-fpm进程终止执行。这个问题与网关服务如php-fpm的配置有关。

php-fpm.conf配置文件中有两个参数就需要你考虑到,分别是max_children和request_terminate_timeout。

  • max_children最大子进程数,在高并发请求下,达到php-fpm最大响应数,后续的请求就会出现502错误的。可以通过netstat命令来查看当前连接数。

  • request_terminate_timeout设置单个请求的超时终止时间。还应该注意到php.ini中的max_execution_time参数。当请求终止时,也会出现502错误的。

当积累了大量的php请求,你重启php-fpm释放资源,但一两分钟不到,502又再次呈现,这是什么原因导致的呢? 这时还应该考虑到数据库,查看下数据库进程是否有大量的locked进程,数据库死锁导致超时,前端终止了继续请求,但是SQL语句还在等待释放锁,这时就要重启数据库服务了或kill掉死锁SQL进程了。

三、什么是504状态码?

504 Gateway Time-out:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。

四、504 Gateway Time-out 原因一般有哪些?

504错误一般是与nginx.conf 配置有关。主要与以下几个参数有关:

fastcgi_connect_timeout

fastcgi_send_timeout

fastcgi_read_timeout

fastcgi_buffer_size

fastcgi_buffers

fastcgi_busy_buffers_size

fastcgi_temp_file_write_size

fastcgi_intercept_errors

特别是前三个超时时间。如果fastcgi缓冲区太小会导致fastcgi进程被挂起从而演变为504错误。

五、关于PHP+Nginx经常出现502、504的解决方法

由于不同的原因,解决方法也是不一样的,一定要根据实际的情况去分析。例如,以下是我以前遇到的502的相关问题。

1、Nginx 502 Bad Gateway 原因与解决方法

2、Nginx报错:upstream timed out (110: Connection timed out) 原因与解决方法

今天重点说下我遇到504问题的解决方法。

由于我用的是PHP+Nginx+百度云加速CDN,然后,百度云加速CDN一直给我报504错误,我排查了很多也没有找到原因。

1、最初我以为修改nginx.conf,增加如下“error Connection timed out and 504 error”的代码可以解决这个问题。

PHP+Nginx经常出现502、504原因与解决方法

[root@localhost /]# vim nginx.confserver {        listen 80;         server_name zabbix.gree.com;         access_log /roobo/logs/nginx/zabbix.gree.com_access.log main;         error_log /roobo/logs/nginx/zabbix.gree.com_error.log error ;         root /roobo/webserver/zabbix;        index index.html index.htm index.php;           location / {             try_files $uri $uri/ /index.php$is_args$args;         }         location ~ .php$ {             try_files $uri =404;             include fastcgi.conf;             fastcgi_pass 10.7.19.195:9000;         }          #error Connection timed out and 504 error        large_client_header_buffers 4 16k;        client_max_body_size 30m;        client_body_buffer_size 128k;        fastcgi_connect_timeout 300;        fastcgi_read_timeout 300;        fastcgi_send_timeout 300;        fastcgi_buffer_size 64k;        fastcgi_buffers   4 32k;        fastcgi_busy_buffers_size 64k;        fastcgi_temp_file_write_size 64k; }

经过测试,并没有任何效果。

2、我又自信的以为是我用了FirewallD防火墙的原因,结果我关闭它,测试也没有效果,照样报504错误。

3、最后当再出现504错误的时候,我直接暴力操作,杀死php-fpm,再重启,就可以恢复正常,从而我判断是php的问题。经过我的排查,发现是“pm.max_requests”这个参数的问题,我最初设置的是204000,现在设置的是20400即可恢复正常,没有再出现504错误了,平均负载 Load Average也在正常的范围类。

4、但是过一段时间后,又会出现“504连接超时”这个问题。

5、最终,经过我几天的测试,我最终php-fpm.conf参数调整如下即恢复正常:

注意:这里我顺便说一下,我以前配置的参数是 pm.max_spare_servers = 60; pm.max_requests = 204800;

PHP+Nginx经常出现502、504原因与解决方法

pm = dynamic pm.start_servers = 20 pm.min_spare_servers = 20 pm.max_spare_servers = 30 pm.max_requests = 20480

总结:

通俗点讲,设置“pm.max_requests”参数小一点,就是让php-fpm能够自动的频繁重启,关于具体设置多大?要根据你的服务器配置以及流量状况来分析,自己可以去做测试。

经过我的的测试,我发现pm.max_requests设置太大会出现504 Gateway Time-out,pm.max_requests设置太小,平均负载 Load Average又会超出正常值的范围,甚至更高。


新软师兄 » PHP+Nginx经常出现502、504原因与解决方法
50T免费网盘资源大集合【持续更中~~~~】:点击查看

dase kand pornhan.mobi xvideo desi gay pcso 2pm result today pinoytvfriends.com where i can watch bad romeo كلام فى النيك wfporn.com قصص محارم حديثة busporn porngugu.mobi indian sexx vedios sex ka video noticieroporno.com himachal pradesh sex com
nero hentai hentaitgp.com ламия хентай www.mom xxx.com alohaporn.me sahara knite mature fucking tubepatrolporn.com bhabi sex indian girl sex gotporn.mobi xnxx family strocks ang probinsyano july 20 2022 full episode youtube pilipinoteleserye.com ano ang pambansang sasakyan ng pilipinas
احلي سكس محارم pornxporn.org نيك فلاحى multi.xnxx alohaporn.net telugu sex chart سكس قصيرات arabysexy.org نيك نقاب www assames sex com umora.info desi sexy bhabi 8teenx bukaporn.com india hot sex videos