最近客户项目上线前小程序需要做性能压测,使用JMeter做了下单场景和混合场景压测,Mark一下。
压测任务需求(示例):
测试类型 | 测试项 | 事务 | 并发用户数 | 需求指标 | 执行时间(分) | 事务成功率指标要求 | 平均响应时间(秒) | TPS | 事务成功率 |
压力测试 | 首页 | 首页版面版本检测 | 3000 | ≤3秒 | 10 | ≥99% | |||
首页版面下载 | 3000 | ≤3秒 | 10 | ≥99% | |||||
登录小程序 | 小程序版本检测 | 3000 | ≤3秒 | 10 | ≥99% | ||||
登录小程序下载 | 3000 | ≤3秒 | 10 | ≥99% | |||||
混合场景 | 首页(占比50%) | 首页版面版本检测 首页版面下载 | 1000 | ≤3秒 | 10 | ≥99% | |||
登录小程序(占比50%) | 小程序版本检测 | 1000 | ≤3秒 | 10 | ≥99% |
JMeter官方地址:https://jmeter.apache.org/
jmeter控制台启动:
cd apache-jmeter-5.6.3/bin sh jmeter.sh
图形化模式适用于调试,不要进行压测。
图形化的压测方式会消耗较多的客户端性能,在压测过程中容易因为客户端问题导致内存溢出。官方不推荐我们使用图形化界面,推荐使用命令行方式执行测试脚本:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
命令行执行的方式同样适用于 Windows、Mac 和 Linux 系统,不需要纠结系统兼容性的问题。相对于命令行执行,界面化的方式更为简单、方便,但命令行执行也并不是完美无缺的。
命令行执行参数含义:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
-n 表示在非 GUI 模式下运行 JMeter;
-t 表示要运行的 JMeter 测试脚本文件,一般是 jmx 结尾的文件;
-l 表示记录结果的文件,默认以 jtl 结尾;
-e 表示测试完成后生成测试报表;
-o 表示指定的生成结果文件夹位置。
混合场景压测使用的是多线程组方案。白屏编辑好测试计划,然后导出 test.jmx 到压测机器,进入 jmeter 工具 apache-jmeter-5.6.3/bin 路径,黑屏执行:
nohup ./jmeter -n -t test.jmx -l result.jtl > jmeter-run.log 2>&1 & echo $! > jmeter.pid
生成html测试报告:
./jmeter -g result.jtl -e -o ./HtmlReport
相关参考:
