Jmeter3.1 使用及新增报告功能
一、JMeter官网
下载地址
http://jmeter.apache.org/download_jmeter.cgi
Jmeter wiki
https://wiki.apache.org/jmeter
二、概念
ElapsedTime
消耗时间,与ResponseTime/SampleTime一致,表示开始请求到响应接收完毕的时间;
Latency
延迟时间,仅包括开始请求到准备接收响应的时间;
90% Line
一种时间度量指标,表示90%的请求都在该响应时间内完成;
Throughput
吞吐量,指每秒处理的请求数;
公式:Throughput=(number of requests) / (total time)
吞吐量与响应时间/并发数的关系:
TPS=U_concurrent/(T_response+T_think)
其中T_think为用户思考时间
ThreadGroup
线程组,用于控制并发请求的组件;
设置参数
- 线程数量,控制并发数量
- rame-up周期,线程柔和增长周期,比如100个线程的增长周期是10s,那么1s增加10个线程
- 固定请求数量
- 循环执行设置,可指定开始和结束时间
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
四、使用变量
properties文件
Jmeter主要的配置文件
- jmeter.properties,定义jmeter运行的关键配置;
- system.properties,定义Java进程的系统变量,通过System.getProperties()可查询;
- user.properties,自定义配置,可覆盖jmeter.properties
命令行启动
-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)}
五、远程测试
- 将jmeter部署到远程节点,启动server
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的结果文件,通过在结果监听器中添加输出路径可获得。
也可以通过命令行方式直接输出,如:(-1是小写字母L哦,不要写错了)
- 基本命令格式:
jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder> - 样例:
jmeter -n -t F:\PerformanceTest\TestCase\script\getToken.jmx -l testLogFile -e -o ./output
执行成功后会在\apache-jmeter-3.0\bin\output目录下产生如下文件(夹):

html报告
Jmeter3.x支持直接生成HTML格式的报告,可参考详细说明
直接生成报告
jmeter -n -t test.jmx -l result.jtl -e -o /opt/local/jmeter/result/html-e 表示生成html报告,-o指定目标路径(必须为空)
从jtl文件中转换
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插件,插件地址
- 部署ServerAgent
将ServerAgent上传到目标服务器,执行startAgent.sh启动;
默认情况下会启动4444,可修改启动端口:
./startAgent.sh --udp-port 7777 --tcp-port 7777
编辑Jmeter脚本文件,添加Perfmon监听器。
可设置将监控数据输出到jtl文件用于后续分析自动生成图片
需借助JMeterPluginsCMD插件,下载地址
命令行执行:JMeterPluginsCMD.sh --generate-png cpu.png --input-jtl perfmon-cpu.jtl --plugin-type PerfMon --width 800 --height 600
八、常用插件
SteppingThreadGroup
插件地址
Jmeter自带的ThreadGroup只能均匀增加线程,无法模拟更真实的压力场景;
该插件支持更灵活的控制并发压力,如:
初始启动20线程,此后每10秒钟增加5个线程,到达100个线程之后持续运行100s...
CompositeGraph
插件地址
该插件将响应时间、吞吐量报表进行了组合,需依赖于其他几个插件。
在观察服务器极限性能时比较有用,可用于权衡指定请求频度下并发数大小。
通常情况下当并发数超过系统承受能力时,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
Jmeter3.1 使用及新增报告功能的更多相关文章
- ubuntu关闭自动更新、打开 ubuntu 的 apport 崩溃检测报告功能
菜单栏点 系统 --->首选项 --->启动应用程序 --->更新提示 前面的钩打掉 关闭即可 =========== 打开 ubuntu 的 apport 崩溃检测报告功能 ...
- sns社交系统ThinkSNS+ 更新至V0.8.2,新增圈子功能
sns社交系统"ThinkSNS+"于7月15日发布了V0.8.0,含开源版本web+H5,及Android APP和iOS APP客户端. V0.8.2版本将于7月29日(本周六 ...
- atitit.新增编辑功能 跟orm的实现 attilax p31
atitit.新增编辑功能 跟orm的实现 attilax p31 1. 流程的实现 1 2. view的实现(dwr) 1 3. 获取表结构 1 4. grep filt req params 2 ...
- Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币
什么是数组? 数组的定义:是用统一的名字代表这批数据,用序号来区分各个数据.数组是无序的数据元素按有序的下标组成的集合,分配固定空间大小的一种容器. 如何理解:其实就是一个同时放很多数据的变量. a= ...
- 关于html5新增的功能(百度)
HTML5包含以下新增和更新功能: 1. 新增了一种HTML文档类型:<DOCTYPE html> 2. 新增了一些结构化标记的元素(<header>,<nav> ...
- 微信快速开发框架(九)-- V3.0发布,代码已更新至Github 新增微店功能
版本内容 1.修正了缺少对Event.View的支持 2.增加了用户UnionID 3.新增微信小店功能 4.多客服功能 5.单元测试 什么是UnionID 我们知道,每个用户针对一个微信公众账号都有 ...
- 【PHP发展史】PHP5.2 到 PHP5.6 中新增的功能详解
截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护的 PHP5.2, 其余的一半用户在使用 PHP5.3. 因为 PHP 那“集百家之长”的 ...
- Editable DataGrid 实现列表新增编辑功能
今天在开发一个功能时候,需要直接在列表实现新增.编辑等功能.于是查看easyui 相关文档,找到相关解决办法. easyui的datagrid支持可编辑功能.它使用户能够向数据网格中添加一个新行.用户 ...
- PHP 自 5.2 到 5.6 中新增的功能详解
截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5.3 [注].因为 PHP 那 ...
随机推荐
- POJ - 2482:Stars in Your Window (扫描线 )
题意:二维平面上给你N颗星,给出星星的坐标,亮度: 然后给你一个W*H的窗口,问你最大的亮度和. 思路:扫描线,假设有一个inf*H的窗口,按照y排序,那么就把H范围内的星星放入了这个窗口(单调队列实 ...
- SOLOR介绍
https://www.cnblogs.com/ki16/p/11209508.html
- Import declarations are not supported by current JavaScript version
原因为:不支持当前的js版本,在perference中进行设置javascript的版本即可 注意:在perference中进行更改,而不是defeaut perference,快捷键操作为:comm ...
- python变量选中后高亮显示
file>settings>editor>color scheme>general>code>identifier under caret>backgroun ...
- (3) esp8266 官方库文件,没有求逆函数
下载库文件 #include <MatrixMath.h> #define N (2) mtx_type A[N][N]; mtx_type B[N][N]; mtx_type C[N][ ...
- HBase 基本入门篇
无论是 NoSQL,还是大数据领域,HBase 都是非常”炙热”的一门数据库.本文将对 HBase 做一些基础性的介绍,旨在入门. 一.简介 HBase 是一个开源的.面向列的非关系型分布式数据库,目 ...
- Redis存储List
list中数据可以重复,查询快,增删慢. 存储结构: 1.向List存取数据: 查询list中的全部元素: 第一个进入a,第二个进入b,并将a向后移一位. 上图为从右边插入元素的情况. 2.从两头取出 ...
- [RN] React Native 生成 Android APK
在用模拟器或者真机调试完App后,需要将App打包成Apk发布文件. 下面简单记录下打包步骤: 第一:生成签名密钥 这一步的操作主要是生成需要的签名密钥,供android调用,生成的文件待用 在项目根 ...
- 【后缀数组】【LuoguP2852】 [USACO06DEC]牛奶模式Milk Patterns
题目链接 题目描述 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个"模式". J ...
- GoCN每日新闻(2019-10-09)
GoCN每日新闻(2019-10-09) GoCN每日新闻(2019-10-09) 1. 我们如何将服务延迟减少了98% https://blog.gojekengineering.com/the-n ...