下载地址
http://jmeter.apache.org/download_jmeter.cgihtml
Jmeter wiki
https://wiki.apache.org/jmetergit
ElapsedTime
消耗时间,与ResponseTime/SampleTime一致,表示开始请求到响应接收完毕的时间;github
Latency
延迟时间,仅包括开始请求到准备接收响应的时间;apache
90% Line
一种时间度量指标,表示90%的请求都在该响应时间内完成;服务器
Throughput
吞吐量,指每秒处理的请求数;
公式:Throughput=(number of requests) / (total time)并发
吞吐量与响应时间/并发数的关系:
TPS=U_concurrent/(T_response+T_think)
其中T_think为用户思考时间tcp
ThreadGroup
线程组,用于控制并发请求的组件;
设置参数函数
SummaryReport
聚合报告,结果指标包括:性能
属性 | 描述 |
---|---|
label | 每一个样本的名称 |
samples | 测试请求总数量 |
average | 平均响应时间 |
median | 50%用户的响应时间 |
90%line | 90%用户的响应时间 |
min | 最小响应时间 |
max | 最大响应时间 |
error% | 错误发生率 |
recv KB/s | 每秒接收的数据量 |
throughput | 吞吐量(TPS) |
GUI启动测试
./jmeter.bat
命令行启动
jmeter -n -t xxx.jmx
中止测试
//平滑中止(gracefully stop, thread will stop at next opportunity) ./bin/shutdown.sh //当即中止(will kill thread directory) ./bin/stoptest.sh
Jmeter主要的配置文件
-J 指定本地JMeter变量
-D 指定Java系统变量
-G 指定全局JMeter变量,在远程测试时会传输到测试节点
样例
PATH=$PATH:/opt/local/jre/bin JVM_ARGS="-Xmx2048m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k" jmeter -Jmongo.host=xxx -Jmongo.port=xxx -n -t test.jmx
JVM_ARGS 用于指定JVM大小,-n指定了no-gui模式启动
-Gglobal.properties可代替-Gvar=value的方式
在测试计划中可经过函数对变量进行引用:
${__P(varName,defaultValue)}
PATH=$PATH:/opt/local/jre/bin JVM_ARGS="-Xmx2048m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k" ./bin/jmeter-server &
端口设置
Jmeter-server采用RMI实现通信,默认端口为1099
可编辑user.properties进行修改:
server_port=1999
修改user.properties:
remote_hosts=xxx:1999
配置好远程节点以后,可直接经过GUI客户端执行测试,然而在自动化的场景下每每须要采用命令行方式执行:
//启动所有远程节点测试 jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -r //指定部分远程节点测试 jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -R192.168.0.100:1999,192.168.0.101:1999 //中止远程节点测试 jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -R192.168.0.100:1999,192.168.0.101:1999 -Z
jtl文件
Jmeter 执行测试后可生成jtl/csv/xml的结果文件,经过在结果监听器中添加输出路径可得到。
也能够经过命令行方式直接输出,如:
jmeter -n -t test.jmx-l result.jtl
html报告
Jmeter3.x支持直接生成HTML格式的报告,可参考详细说明
jmeter -n -t test.jmx-l result.jtl -e -o /opt/local/jmeter/result/html
-e 表示生成html报告,-o指定目标路径(必须为空)
jmeter -g result.jtl -o /opt/local/jmeter/result/html
定制报告
修改user.properties:
//按sample名称过滤 jmeter.reportgenerator.sample_filter=find|update|delete|list|insert //APDEX模型-知足需求阈值(响应时间) jmeter.reportgenerator.apdex_satisfied_threshold=300 //APDEX模型-可容忍阈值(响应时间) jmeter.reportgenerator.apdex_tolerated_threshold=1200 //数据聚合频率,性能测试场景可适当减少,稳定性测试可加长,默认60s jmeter.reportgenerator.overall_granularity=5000
关键报表
ResponseTimeOverTime
TransactionsPerSecond
ActiveThreadOverTime
ResponseTimePercentiesOverTime
使用Perfmon插件,插件地址
./startAgent.sh --udp-port 7777 --tcp-port 7777
编辑Jmeter脚本文件,添加Perfmon监听器。
可设置将监控数据输出到jtl文件用于后续分析
JMeterPluginsCMD.sh --generate-png cpu.png --input-jtl perfmon-cpu.jtl --plugin-type PerfMon --width 800 --height 600
插件地址
Jmeter自带的ThreadGroup只能均匀增长线程,没法模拟更真实的压力场景;
该插件支持更灵活的控制并发压力,如:
初始启动20线程,此后每10秒钟增长5个线程,到达100个线程以后持续运行100s...
插件地址
该插件将响应时间、吞吐量报表进行了组合,需依赖于其余几个插件。
在观察服务器极限性能时比较有用,可用于权衡指定请求频度下并发数大小。
一般状况下当并发数超过系统承受能力时,TPS出现明显下滑,响应时间持续上升。
GitBook-Jmeter参考
https://aimer1124.gitbooks.io/jmeter-tutorial/
yukinami的博客
http://yukinami.github.io/2015/11/26/性能测试指南/
Jmeter逻辑控制器(总结的不错的一篇文章)
http://www.guru99.com/controllers-in-jmeter.html
Jmeter VS LoadRunner
http://www.cnblogs.com/shuiyelifang/p/5749523.html
TPS/响应时间/并发数的研究
http://blog.csdn.net/wind19/article/details/8600083