必威体育Betway必威体育官网
当前位置:首页 > IT技术

高并发下web服务器http异常状态码499/502/504分析

时间:2019-07-16 04:15:36来源:IT技术作者:seo实验室小编阅读:64次「手机版」
 

499

环境说明
压测工具:apache/ab

web服务器:NGINX/1.8.0 + PHP 5.6.25

php脚本:get.php

注:

nignx 设置超时

fastcgi_connect_timeout 60
fastcgi_send_timeout 60
fastcgi_read_timeout 60
php-fpm 设置超时

request_terminate_timeout 10
压测开始
1.get.php源码

<?php
for ($i=0; $i < 50; $i++) { 
	# code...
	sleep(1);
}

2.使用ab模拟10个client对get.php并发请求100次

ab -c 10 -n 100 http://time-out.com/get.php
结果分析

情况一:每个php执行50s以上远大于超时时间(10s),fpm会自动发送kill信号(SIGTERM)给工作进程clild进程关闭。此时nginx与php-fpm的连接断开,nginx找不到对方,报502 bad gateway错误。

如图:fpm超时的处理 (php-fpm.conf)

如图:kill掉进程,重新启动fpm工作进程(php-fpm日志)

如图:nginx报502 Bad Gateway (nginx access.log)

情况二:client端(ab压测那端)等待不耐烦,关闭自身致使连接从客户端先断开,nginx检查到客户端已断开连接,则报499 code 。(注:其他情况如用户主动关闭浏览器等)

如图:nginx报499

如图:nignx对499的定义

情况三: 重新设置nginx超时为5s,再次压测,此时未等php超时,nginx已经超时了,nginx报504 gateway time-out 

如图:nginx报504 Gateway Time-out

总结:

第一种是php-fpm没设置超时,即request_terminate_timeout 设置为0,永不超时。我们常见的状态码是504或499,原因是要么nginx超时,要么用户等不耐烦关闭连接。

第二种情况是php-fpm设置超时如10s,常见的状态码是502或者504,也有可能499。另外由于并发高,php-fpm工作进程都在忙,没有可用的工作进程,此时常见502 Bad Gateway。还有一种是php-fpm挂了或没启动,同理也是502。

相关阅读

数据分析带给我们什么价值?

无论是线上还是线下技术交流,我经常被问的一个问题是“你所处在的职位能够给公司带来什么?”这边梳理了一些看法,希望给大家带来一些

淘宝标题如何拆分词根?怎么做词根分析?

不管是大卖家还是小卖家都知道标题优化的重要性,好的标题可以为宝贝和店铺带来大量的流量,但是想要获得一个好标题并不简单,需要做好

DUMP文件分析1:DUMP文件简介

1.1 DUMP文件类型 Windows下Dump文件分为两大类,内核模式Dump和用户模式Dump。内核模式Dump是操作系统创建的崩溃转储,最经典的就

网站数据分析对网站SEO具有何作用

谈到网站的优化不仅仅只能懂得推广和SEO技术,其数据分析也是作为一个SEOer人员必备的技能,当一个网站在营运过程中,要想随时掌握其运

什么叫对数据敏感?怎样做数据分析?

今天讲一下我对数据的理解。一、从数据维度做拆分,让目标更加落地我做过近两年的电商运营,其中感触很深的一个点就是从数据的维度对

分享到:

栏目导航

推荐阅读

热门阅读