PHP-如何解决Nginx+PHP(FastCGI)环境下经常出现的502 Bad Gateway错误?
运行在Nginx+PHP(FastCGI)环境下的web项目总会遇到502 Bad Gateway错误提示,这种错误一般是如何产生的呢?有什么解决之道?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
运行在Nginx+PHP(FastCGI)环境下的web项目总会遇到502 Bad Gateway错误提示,这种错误一般是如何产生的呢?有什么解决之道?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
nginx出现502的原因很多。例如:fastcgi进程数大于nginx设置数,连接数太多(服务器压力太大),php脚本处理时间过长。
一般出现502大多是服务器扛不住压力,和nginx参数配置关系不大(因为大多配置nginx的教程很多,都很全)。
我们的用户中心的服务器监控经常报502,服务器压力站很大的可能性。有可能是以前的老程序逻辑不够严谨,导致用户量大的时候,服务器扛不住。
1.FastCGI worker进程数是否不够
运行 netstat -anpo | grep “php-cgi” | wc -l 判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少
2.FastCGI执行时间过长
根据实际情况调高以下参数值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
3.FastCGI Buffer不够
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
4.ulimit -HSn 60000 开大点
5.优化程序,特别是执行时间长的和调用频繁的
在我们项目中,配置一般都已经固定好,出现经常是由于负载引起502错误。
当出现502错误时,网站的动态访问都会是502,静态页面还是可以访问的。所以也可以做一些监控来报警这类错误的产生。
负载有可能以下问题造成:1.程序的问题。2.数据库负载的问题。 大多数情况实际上还是数据库负载引起的,优化网站的结构,采用比较高效的缓存方式,来避免数据库的瓶颈,从而来避免502错误的出现。
将large_client_header_buffers调大一下试试,web服务器的进程数是不是开的过少,看下mysql的慢查询日志看看是哪些sql执行较慢,导致某些页面执行速度过慢,看下web日志是哪些页面报的502错误优化下代码,经常访问的资源缓存下。