压测工具
目录
AB
ab是apachebench命令的缩写,ab命令会创建多个并发访问线程,模拟多个访问者同时对某一HTTP URL地址进行访问。
常用参数
-n 测试会话中所执行的请求个数,默认仅执行一个请求,如果不指定-t参数,默认执行完所有请求后自动结束压测。
-c 一次产生的请求个数,即同一时间发出多少个请求,默认为一次一个,此参数可以控制对服务器的单位时间内的并发量。
-t 测试所进行的最大秒数,默认为无时间限制....其内部隐含值是[-n 50000],它可以使对服务器的测试限制在一个固定的总时间以内,如果时间到了,请求个数还未执行完,也会被停止。
-p 包含了需要POST的数据的文件,数据格式以接口请求参数定义的格式为准,eg. xxx.json。
-T POST 数据所使用的Content-type头信息,指定请求参数格式,eg. application/json。
-r 在接口返回失败后,默认会终止压测,添加此参数后压测会继续进行。
-C 对请求附加一个Cookie行,其典型形式是name=value的参数对,此参数可以重复。
-H 对请求附加额外的头信息,此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如"Accept-Encoding:zip/zop;8bit")。
-X 对请求使用代理服务器。
-k 启用HTTP KeepAlive(长连接)功能,即在一个HTTP会话中执行多个请求,默认为不启用KeepAlive功能。
压测示例
GET
ab -n 1000000 -c 200 -r "http://localhost:8080/a/b?a=b"
POST
ab -n 2000 -c 100 -p lock.json -T 'application/json' "http://127.0.0.1:9501/lock/redis/async"
结果分析
This is ApacheBench, Version 2.3 <$Revision: 1901567 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 200 requests
Completed 400 requests
Completed 600 requests
Completed 800 requests
Completed 1000 requests
Completed 1200 requests
Completed 1400 requests
Completed 1600 requests
Completed 1800 requests
Completed 2000 requests
Finished 2000 requests
Server Software: swoole-http-server
Server Hostname: 127.0.0.1 # 请求的URL主机名
Server Port: 9501 # 请求端口
Document Path: /lock/redis/async #请求路径
Document Length: 58 bytes #HTTP响应数据的正文长度
Concurrency Level: 100 #并发用户数,这是我们设置的参数之一(-c)
Time taken for tests: 1.936 seconds #所有这些请求被处理完成所花费的总时间 单位秒
Complete requests: 2000 #总请求数量,这是我们设置的参数之一(-n)
Failed requests: 0 #表示失败的请求数量
Non-2xx responses: 2000
Total transferred: 784000 bytes
Total body sent: 370000
HTML transferred: 116000 bytes
Requests per second: 1033.08 [#/sec] (mean) # 用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数)
Time per request: 96.798 [ms] (mean)
Time per request: 0.968 [ms] (mean, across all concurrent requests)
Transfer rate: 395.48 [Kbytes/sec] received
186.64 kb/s sent
582.12 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 5
Processing: 32 91 251.9 37 1440
Waiting: 32 91 251.9 37 1440
Total: 32 92 252.5 37 1444
Percentage of the requests served within a certain time (ms)
50% 37 # 50%的请求在37毫秒内返回
66% 38
75% 39
80% 40
90% 42
95% 80
98% 1196
99% 1415 # 99%的请求哎1415毫秒内返回
100% 1444 (longest request)