一. JMeter介绍
Apache JMeter是Apache组织开发的基于Java的压力测试工具。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
二. JMeter安装
1. 安装JDK
参考官网
2. 安装JMeter
-
直接访问官网下载编译好的版本。
-
解压(建议至/Applications 目录)后目录结构如下图:
-
添加环境变量
- 打开 ~/.bash_profile文件
- 添加以下指令:
export JMETER_HOME=/Applications/apache-jmeter-5.2.1/bin
export PATH=$JMETER_HOME:$PATH:.
- 执行
source ~/.bash_profile
使环境变量生效
-
执行
jmeter -v
出现下图内容则安装成功
三. 启动JMeter
- 执行
jmeter
,将启动JMeter,在终端会有如下输出:
在输出中提示不能使用图形界面进行负载测试,只能创建和调试测试计划,负载测试需要执行如下命令:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
另外提示需要增加JVM的Heap配置去满足自己的测试需求。 - 在终端启动JMeter后会自动打开图形界面,如下图:
可操作菜单Options => Choose Language => Chinese 进行中文语言的切换:
四. 模拟压测环境
- docker安装nginx
docker run --name nginx-load-test -p 87:80 -d nginx
- curl 发送请求
curl 'http://localhost:87'
输出如下,说明nginx安装成功:
- 监控nginx运行状态
docker stats nginx-load-test
五. 创建测试计划
-
点击文件=》新建,创建测试计划。
-
右键“测试计划”,选择“添加=》线程=》线程组”
3.设置线程数为“3000”
-
右键“线程组”,选择“添加=》取样器=》http请求”
-
设置http请求的路径为
http://localhost:87
-
右键“线程组”,选择“添加=》断言=》响应断言”
-
设置响应代码为200
-
右键“线程组”,选择“添加=》监听器=》观察结果树”
-
点击顶部的执行按钮(绿色三角符),验证执行结果,在观察结果树可看到执行的记录
10.点击保存,测试计划创建完成
六. 运行测试计划
执行命令jmeter -n -t ./Test_Plan.jmx -l result.txt -e -o report
Test_plan.jmx:测试计划文件
result.txt:测试记录
report:测试报告保存目录
输出如下则执行成功
七. 看懂测试报告
进入至report目录,用浏览器打开index.html
中间Statistics部分是聚合报告,测试报告的主要指标集中在这一部分,下面是指标的详细说明:
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
- Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
- Median:中位数,也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:本次测试中出现错误的请求的数量/请求的总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec