APacheab压⼒测试⼯具
1、关于压⼒测试
压⼒测试是⼀种基本的质量保证⾏为,它是每个重要软件测试⼯作的⼀部分。压⼒测试的基本思路很简单:不是在常规条件下运⾏⼿动或⾃动测试,⽽是在计 算机数量较少或系统资源匮乏的条件下运⾏测试。通常要进⾏压⼒测试的资源包括内部内存、CPU 可⽤性、磁盘空间和⽹络带宽等。⼀般⽤并发来做压⼒测试。
nginx和apache区别2、压⼒测试指标
吞吐率(Requests per second)
概念:服务器并发处理能⼒的量化描述,单位是reqs/s,指的是某个并发⽤户数下单位时间内处理的请求数。某个并发⽤户数下单位时间内能处理的最⼤请求数,称之为最⼤吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests
并发连接数(The number of concurrent connections)
概念:某个时刻服务器所接受的请求数⽬,简单的讲,就是⼀个会话。
并发⽤户数(The number of concurrent users,Concurrency Level)
概念:要注意区分这个概念和并发连接数之间的区别,⼀个⽤户可能同时会产⽣多个会话,也即连接数。
⽤户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发⽤户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)
服务器平均请求等待时间(Time per request: across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=⽤户平均请求等待时间/并发⽤户数,即
Time per request / Concurrency Level
3、关于Apache ab压⼒测试⼯具
ab是Apache超⽂本传输协议(HTTP)的性能测试⼯具。其设计意图是描绘当前所安装的Apache的执⾏性能,主要是显⽰你安装的Apache每秒可以处理多少个请求。
4、下载安装
4)安装⽂件:
5)使⽤apache ab
cmd进⼊apache ab的bin⽬录:
cmd进⼊apache ab的bin⽬录
执⾏ab压⼒测试命令
5、压⼒测试说明
1)测试场景:模拟10个⽤户,对百度⾸页发起总共100次请求
3)ab常⽤参数的介绍:
-n :总共的请求执⾏数,缺省是1;
-c: 并发数,缺省是1;
-t:测试所进⾏的总时间,秒为单位,缺省50000s
-p:POST时的数据⽂件
-w: 以HTML表的格式输出结果
4)测试结果详细说明:
Server Software: bfe/1.0.8.14 //被测试的服务器所⽤的软件信息,这⾥使⽤的是百度⾃⼰ 开发的反向代理Baidu Front End,类似nginx。
Server Hostname: www.baidu //被测主机名
Server Port: 443 //被测主机的服务端⼝号,⼀般http请求的默认端⼝号是80,https默认使⽤443端⼝
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128 //加密协议
Document Path: /index.html//请求的具体⽂件
Document Length: 227 bytes //请求的⽂件index.html⼤⼩
Concurrency Level: 10 //并发级别,也就是并发数,请求中-c参数指定的数量
Time taken for tests: 1.093 seconds //本次测试总共花费的时间
Complete requests: 100 //本次测试总共发起的请求数量
Failed requests: 0 //失败的请求数量。因⽹络原因或服务器性能原因,发起的请求并不⼀定全部成功,通过该数值和Complete requests相除可以计算请求的失败率,作为测试结果的重要参考。
Total transferred: 103314 bytes//总共传输的数据量,指的是ab从被测服务器接收到的总数据量,
包括index.html的⽂本内容和请求头信息。
HTML transferred: 22700 bytes //从服务器接收到的index.html⽂件的总⼤⼩,等于Document Length*Complete requests =227 bytes*100=22700 bytes
Requests per second: 91.50 [#/sec] (mean) //平均(mean)每秒完成的请求数:QPS,这是⼀个平均值,等于Complete
requests/Time taken for tests=100/1.093=91.50
Time per request: 109.287 [ms] (mean) //从⽤户⾓度看,完成⼀个请求所需要的时间(因⽤户数量不⽌⼀个,服务器完成10个请求,平均每个⽤户才接收到⼀个完整的返回,所以该值是下⼀项数值的10倍。)
Time per request: 10.929 [ms] (mean, across all concurrent requests)// 服务器完成⼀个请求的时间。
Transfer rate: 92.32 [Kbytes/sec] received//⽹络传输速度。对于⼤⽂件的请求测试,这个值很容易成为系统瓶颈所在。要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的⽹络情况,包括⽹络带宽和⽹卡速度等信息。
Connection Times (ms)
min mean[+/-sd] median max
Connect: 47 74 12.9 74 106
Processing: 9 32 20.2 32 106
Waiting: 9 29 19.1 27 98
Total: 66 106 20.8 106 195
//这⼏⾏组成的表格主要是针对响应时间也就是第⼀个Time per request进⾏细分和统计。⼀个请求的响应时间可以分成⽹络链接(Connect),系统处理(Processing)和等待(Waiting)三个部分。表中min表⽰最⼩值; mean表⽰平均值;[+/-sd]表⽰标准差(Standard Deviation) ,也称均⽅差(mean square error),这个概念在中学的数学课上学过,表⽰数据的离散程度,数值越⼤表⽰数据越分散,系统响应时间越不稳定。 median表⽰中位数; max当然就是表⽰最⼤值了。
//需要注意的是表中的Total并不等于前三⾏数据相加,因为前三⾏的数据并不是在同⼀个请求中采集到的,可能某个请求的⽹络延迟最短,但是系统处理时间⼜是最长的呢。所以Total是从整个请求所需要
的时间的⾓度来统计的。这⾥可以看到最慢的⼀个请求花费了195ms,这个数据可以在下⾯的表中得到验证。
Percentage of the requests served within a certain time (ms)
50% 106
66% 109
75% 111
80% 114
90% 118
95% 154
98% 176
99% 195
100% 195 (longest request)
//这个表第⼀⾏表⽰有50%的请求都是在106ms内完成的,可以看到这个值是⽐较接近平均系统响应时间(第⼀个Time per request: 109.287 [ms] (mean) )
以此类推,90%的请求是⼩于等于118ms的。刚才我们看到响应时间最长的那个请求是195ms,那么显然所有请求(100%)的时间都是⼩于等于195毫秒的,也就是表中最后⼀⾏的数据肯定是时间最长的那个请求(longest request)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论