使用ApacheBench进行压力测试

Sakura 发布于 2023-06-16 216 次阅读


1.安装ab

yum install httpd-tools

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

3.测试结果分析

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)