近期有很多朋友网站打开时遇到了“502 bad gateway”这种情况。这就是网站很常见的502错误提示,证明你的网站目前遇到的问题是502错误,在这里,我先给大家科普一下网站建设错误代码404/502/509各自代表着什么意思,再来为大家提出解决方案。
1、502:这是服务器上的一个错误网关,因此说它是无效的,我们在出现了服务器502错误问题的时候,最好是先清除下缓存或者是在服务器上进行刷新试试的,因为502错误牵扯的问题也是很多的,最好是让程序们来去在服务器上下文章。是属于内部网络的故障或设置问题,也即内部网络拥塞,可能内部存在大量的数据调用或交互造成的,则需要优化内部网络传输或协议,数据库的数据读取造成前端服务器,响应用户的请求变慢;
2、404:告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开;
3、509:是因为网站流量内增大,带宽不够用就会出现这类错误,网站管理员容需要掏钱向主机商买流量。相比其他500状态码,509算是一个特殊的存在。之所以特殊,是因为这个错误要用钱来解决。509并不是官方的状态码,但是仍然被广泛使用。
那么网站出现502错误具体有哪些原因呢?
将请求提交给网关如php-fpm执行,但是由于某些原因没有执行完毕导致php-fpm进程终止执行。那么出现问题的地方便与网关服务如php-fpm的配置有关。
max_children最大子进程数,在高并发请求下,达到php-fpm最大响应数,后续的请求就会出现502错误的。可以通过netstat命令来查看当前连接数。
request_terminate_timeout设置单个请求的超时终止时间。还应该注意到php.ini中的max_execution_time参数。当请求终止时,也会出现502错误的。
当积累了大量的php请求,此时重启php-fpm释放资源,但没有几分钟的时间,又再次出现502错误,为什么呢?此时我们还应考虑是否与数据库有关,查看下数据库进程是否有大量的locked进程,数据库死锁导致超时,前端终止了继续请求,但是SQL语句还在等待释放锁,这时就要重启数据库服务了或kill掉死锁SQL进程了。
弄清楚具体原因就很好解决了,这个时候对症下药就是最好的解决方案。我们可以先通过以下两个步骤来解决。
1、查看当前的PHPFastCGI进程数是否够用netstat-anpo|grep“php-cgi”|wc-l如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
2、部分PHP程序的执行时间超过了Nginx的等待时间可以适当增加nginx.conf配置文件中FastCGI的timeout时间。
如果php.ini中memory_limit设偏低,修改php.ini的memory_limit为64M,重启nginx,说明PRH内存不足。如果通过以上方法还不能解决问题,可以参考以下方案:
3、max-children和max-requests
一台服务器上运行着nginxphp(fpm)xcache,访问量日均300Wpv左右最近经常会出现这样的情况:php页面打开很慢,cpu使用率突然降至很低,系统负载突然升至很高,查看网卡的流量,也会发现突然降到了很低。一般这种情况只持续数秒钟便可恢复。
以上就网站绝大多数情况出现502错误的原因和解决办法了,因为502错误出现的原因有很多种,因此在解决问题之前,我们先要分析问题,找出问题所在,这样解决起来效率是最高的。如果你想了解更多网站建设方面常见的问题,可以查看网站其他内容,如果你想了解XRSERVERS科技官方的产品内容,可以前往