记录了测试工具的使用,比如 Jmeter, ab
ab
安装
linux
shell
# 安装
yum install httpd-tools
# 启动
service httpd start
mac
使用
命令集
shell
-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。
例子:
shell
/# 并发 500,总共请求 10000
ab -c 500 -n 10000 https://baidu.com/
报告
shell
ab -c 10 -n 200 https://baidu.com/
Benchmarking baidu.com (be patient)
Completed 100 requests
Completed 200 requests
Finished 200 requests
Server Software: bfe/1.0.8.18
Server Hostname: baidu.com
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key: ECDH P-256 256 bits
TLS Server Name: baidu.com
Document Path: /
Document Length: 161 bytes
Concurrency Level: 10
Time taken for tests: 4.934 seconds
Complete requests: 200
Failed requests: 0
Non-2xx responses: 200
Total transferred: 70400 bytes
HTML transferred: 32200 bytes
Requests per second: 40.53 [#/sec] (mean)
Time per request: 246.721 [ms] (mean)
Time per request: 24.672 [ms] (mean, across all concurrent requests)
Transfer rate: 13.93 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 134 179 24.7 174 254
Processing: 40 55 14.4 51 107
Waiting: 40 53 13.0 49 95
Total: 186 235 27.8 234 322
Percentage of the requests served within a certain time (ms)
50% 234
66% 245
75% 252
80% 259
90% 272
95% 284
98% 318
99% 319
重要的指标:
- Requests per second:评价每条的请求数,既服务器的吞吐量
- Time per request(mean):所有并发用户一次请求的平均时间
- Time per request(mean, across all concurrent requests):单个用户请求一次的平均时间
- Percentage of the requests served within a certain time (ms):多少请求,是在某个时间段内完成的
优缺点
优点:
- 安装简单
- 容易使用
缺点:
- 功能简单,比如每次测试只能针对单个请求
- 没有详细的报告信息
Jmeter
安装
mac
mac 自带 Java,所以直接按照 Jmeter 即可
选择 Binaries 版本即可,下载完后,解压压缩包到指定目录:tar zxvf apache-jmeter-5.2.1.tgz
设置环境变量:
shell
export JMETER_HOME=/Applications/apache-jmeter-5.2 # 要匹配好安装的路径
export PATH=$JAVA_HOME/bin:$PATH:.:$JMETER_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar
或者到 Jmeter 的根目录,执行: sh jmeter
,就会启动