温馨提示:这篇文章已超过561天没有更新,请注意相关的内容是否还可用!
很多新手刚开始做网站可能感觉不到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问题的解决方法。
扫描右侧图片,或微信搜索 “ 网络财神 ” 或 “ newjixi ” 关注本站官方公众号,回复 “ 验证码 ” ,获取验证密码。
还没有评论,来说两句吧...