Apache Benche进行压力测试及访问结果报告分析

1.什么是Apache Benche

Apache Bench是款简单的网站压力测试工具,也可将它称为命令行工具,通过ApacheBench命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,主要用来测试目标服务器的负载压力。
Apache Bench命令原理:ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighttpd、tomcat、IIS等其它Web服务器的压力。ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

2.Apache Benche的下载安装

下载地址:https://www.apachelounge.com/download/
Apache Benche进行压力测试及访问结果报告分析_第1张图片
在这里插入图片描述
在readme文件中查看安装需要包
需要安装C++ Redistributable Visual Studio 组件2015-2019

3. 压力测试

打开cmd,进入Apache24\bin目录
ab 查看可执行的命令
官方文档:http://httpd.apache.org/docs/2.2/programs/ab.html
Apache Benche进行压力测试及访问结果报告分析_第2张图片

常用命令:

ab -n xxx -c xxx xxx
-n后面参数是要发送的总的请求数,-c后面参数是并发数,即每次要并发发送多少个请 求,最后一个参数是你要请求的接口地址,就是url
#模拟1个客户端请求100次:
$ ab -n 100 http://www.example.com/
#模拟100个客户端请求10000次
$ ab -n 10000 -c 100 http://www.example.com/
#调用POST方法的接口10次,传输的数据格式为JSON
$ ab -n 10 -p json-file –T content-type http://www.example.com/
#表示每次并发200个请求,总共请求2000次,并把结果输出到指定文件里$ ab -n 2000 -c 200 http://www.example.com/ >>d:1.html

4.测试结果分析

This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient)


Server Software:        BWS/1.1                 # 平台前端服务器类型
Server Hostname:        www.baidu.com           # 服务器主机名
Server Port:            80                      # 服务器端口

Document Path:          /                       # 访问的路径
Document Length:        285633 bytes            # 返回数据大小

Concurrency Level:      10                      # 并发数
Time taken for tests:   59.993 seconds          # 整个测试持续的时间
Complete requests:      500                     # 完成的请求数量
Failed requests:        490
表示失败的请求数,这里的失败是指请求的连接服务器、发送数据、接收数据等环节发生异常,以及无响应后超时的情况。对于超时时间的设置可以用ab的-t参数。而如果接受到的http响应数据的头信息中含有2xx以外的状态码,则会在测试结果显示另一个名为“Non-2xx responses”的统计项,用于统计这部分请求数,这些请求并不算是失败的请求
   (Connect: 0, Receive: 0, Length: 490, Exceptions: 0)
整个场景中的网络传输量,表示所有请求的响应数据长度总和,包括每个http响应数据的头信息和正文数据的长度。注意这里不包括http请求数据的长度,所以Total transferred代表了从Web服务器流向用户PC的应用层数据总长度。通过使用ab的-v参数即可查看详细的http头信息
Total transferred:      143437851 bytes         
HTML transferred:       142854878 bytes			# 整个场景中的HTML内容传输量,表示所有请求的响应数据中正文数据的总和,也就是减去了Total							
Requests per second:    8.33 [#/sec] (mean)		# 每秒钟平均处理的请求数(相当于 LR 中的 每秒事务数)这便是我们重点关注的吞吐率,它等于:Complete requests / Time
Time per request:       1199.860 [ms] (mean)	# 每次并发请求时间(当前并发10)
Time per request:       119.986 [ms] (mean, across all concurrent requests)		# 平均每个请求处理时间,所有并发的请求加一起
Transfer rate:          2334.87 [Kbytes/sec] received		# 平均每秒网络流量
# 花费在连接Connect,处理Processing,等待Waiting的时间的最小min,平均值mean,标准差[+/-sd],中值median,最大表max的一个表。
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        9  113  55.8    107     446		 # 连接
Processing:   474 1078 339.6   1016    6534		 # 处理	
Waiting:        9  170  93.0    156     671		 # 等待
Total:        566 1191 351.9   1114    6645		 # 总量

Percentage of the requests served within a certain time (ms)
  50%   1114			# 50%的用户响应时间小于1114毫秒
  66%   1222			# 66%的用户响应时间小于1222毫秒
  75%   1296			# 以此类推...
  80%   1365
  90%   1602
  95%   1728
  98%   1815
  99%   1839
 100%   6645 (longest request)

你可能感兴趣的:(软件测试,apache)