AB程序并发测试指南

silverwq
2022-09-01 / 1 评论 / 312 阅读 / 正在检测是否收录...

安装

一种简单的方式是,下载apache安装包,安装包的bin目录下已经自带了ab工具。

也可以使用yum方式安装:

yum -y install httpd-tools
#安装是否成功检验
ab -V

使用

使用help参数,查看帮助信息

ab --help

# 输出
-n 即requests,用于指定压力测试总共的执行次数。
-c 即concurrency,用于指定的并发数。
-t 即timelimit,等待响应的最大时间(单位:秒)。
-b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p 即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u 即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T 即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v 即verbosity,指定打印帮助信息的冗余级别。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:“Apache=1234”(可以重复该参数选项以添加多个)。
-H 添加任意的请求头,例如:“Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X 指定使用的和端口号,例如:“126.10.10.3:88”。
-V 打印版本号并退出。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-g 输出结果信息到gnuplot格式的文件中。
-e 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-h 显示用法信息,其实就是ab -help。

如果想要发送10000个请求,并且每次请求1000个,可以输入如下命令

ab -n 10000 -c 1000 http://wslhost:80/

# 输出如下所示
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking wslhost (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.20.2
Server Hostname:        wslhost
Server Port:            80

Document Path:          /
Document Length:        6 bytes

Concurrency Level:      1000  # 并发数
Time taken for tests:   4.386 seconds # 测试总共花费的时间
Complete requests:      10000 # 完成测试的请求数量
Failed requests:        0 # 失败的数量
Total transferred:      1690000 bytes # 网络传输流量 
HTML transferred:       60000 bytes # html传输流量
Requests per second:    2279.79 [#/sec] (mean) # 每秒钟成功请求的数量,也就是吞吐率RPS
Time per request:       438.636 [ms] (mean) # 用户请求结果到返回结果所需时间
Time per request:       0.439 [ms] (mean, across all concurrent requests) # 服务平均请求处理时间
Transfer rate:          376.25 [Kbytes/sec] received # 平均每秒网路的流量

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing:    31  421  80.1    441     508
Waiting:        6  219 124.1    217     500
Total:         31  421  80.1    441     508

Percentage of the requests served within a certain time (ms)
  50%    441 # 50%的请求能在441ms内完成
  66%    450 # 66%的请求能在450ms内完成
  75%    454
  80%    456
  90%    476
  95%    504
  98%    506
  99%    507
 100%    508 (longest request) # 100%的请求能在508ms内完成
0

评论 (1)

取消
  1. 头像
    silverwq 作者
    Windows 10 · Google Chrome

    画图

    回复