天天看点

ab 压力测试及结果分析

介绍及原理

Apache Bench简称

ab

,它是Apache自带的压力测试工具。ab非常实用,它不仅可以对Apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。

安装

  • Ubuntu
sudo apt-get install apache2-utils
           
  • ContOS
yum -y install httpd-tools
           
  • ab -V

    验证是否安装完成
[email protected]:~# ab -V
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
           

压力测试

ab 常用参数

  • -n :总共的请求执行数,缺省是1;
  • -c: 并发数,缺省是1;
  • -t:测试所进行的总时间,秒为单位,缺省50000s
  • -p:POST时的数据文件
  • -w: 以HTML表的格式输出结果

输入命令

ab -n 10000 -c 1000 http://192.168.88.10/index.html

开始测试

[email protected]:/home/vagrant# ab -n 10000 -c 1000 http://192.168.88.10/index.html
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.88.10 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        nginx/1.14.0	#被测试的服务器所用的软件信息
Server Hostname:        192.168.88.10	#被测主机名
Server Port:            80				#被测主机的服务端口号,一般http请求的默认端口号是80,https默认使用443端口

Document Path:          /index.html		#请求的具体文件路径
Document Length:        612 bytes		#请求的index.html文件大小

Concurrency Level:      1000			#并发级别,也就是并发数,请求中-c参数指定的数量
Time taken for tests:   36.639 seconds	#整个测试持续的时间
Complete requests:      10000			#本次测试总共发起的请求数量
Failed requests:        0				#失败的请求数量,因网络原因或服务器性能原因,发起的请求并不一定全部成功,通过该数值和Complete requests相除可以计算请求的失败率,作为测试结果的重要参考
Total transferred:      8540000 bytes	#总共传输的数据量,指的是ab从被测服务器接收到的总数据量,包括index.html的文本内容和请求头信息
HTML transferred:       6120000 bytes	#从服务器接收到的index.html文件的总大小,等于Document Length*Complete requests=612 bytes*10000=6120000 bytes
Requests per second:    272.93 [#/sec] (mean)	#平均(mean)每秒完成的请求数:QPS,这是一个平均值,等于Complete requests/Time taken for tests=10000/36.639=272.93
Time per request:       3663.885 [ms] (mean)	#平均每个请求处理时间为3663.885毫秒 注:这里将一次1000个并发请求看成一个整体
Time per request:       3.664 [ms] (mean, across all concurrent requests)	#平均每个并发请求处理时间 为3.664毫秒 
Transfer rate:          227.62 [Kbytes/sec] received	#网络传输速度,对于大文件的请求测试,这个值很容易成为系统瓶颈所在。要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的网络情况,包括网络带宽和网卡速度等信息

Connection Times (ms)
              min  mean[+/-sd] median   max		#表中min表示最小值; mean表示平均值;[+/-sd]表示标准差(Standard Deviation) ,也称均方差(mean square error),这个概念在中学的数学课上学过,表示数据的离散程度,数值越大表示数据越分散,系统响应时间越不稳定。 median表示中位数; max当然就是表示最大值了。
Connect:        5 1642 1917.9   1332   33195	#网络链接(Connect)
Processing:    75 1532 1506.3   1171   14254	#系统处理(Processing)
Waiting:       74 1494 1506.6   1102   14253	#等待(Waiting)
Total:        173 3174 2856.8   3099   35740	#Total是从整个请求所需要的时间的角度来统计的。这里可以看到最慢的一个请求花费了35740ms,这个数据可以在下面的表中得到验证。

Percentage of the requests served within a certain time (ms)
  50%   3099	#在这1000个请求中有50%在3099毫秒内完成
  66%   3607	#在这1000个请求中有66%在3607毫秒内完成
  75%   4137
  80%   5717
  90%   6731
  95%   8287
  98%  11306
  99%  12035
 100%  35740 (longest request)
           

继续阅读