一、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

线程组,用于控制并发请求的组件;

设置参数

  1. 线程数量,控制并发数量
  2. rame-up周期,线程柔和增长周期,比如100个线程的增长周期是10s,那么1s增加10个线程
  3. 固定请求数量
  4. 循环执行设置,可指定开始和结束时间

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主要的配置文件

  1. jmeter.properties,定义jmeter运行的关键配置;
  2. system.properties,定义Java进程的系统变量,通过System.getProperties()可查询;
  3. 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)}

五、远程测试

  1. 将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
  1. 本地配置远程节点

修改user.properties:

remote_hosts=xxx:1999
  1. 命令行执行

配置好远程节点之后,可直接通过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格式的报告,可参考详细说明

  1. 直接生成报告
jmeter -n -t test.jmx-l result.jtl -e -o /opt/local/jmeter/result/html

-e 表示生成html报告,-o指定目标路径(必须为空)

  1. 从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插件,插件地址

  1. 部署ServerAgent

    将ServerAgent上传到目标服务器,执行startAgent.sh启动;

    默认情况下会启动4444,可修改启动端口:
./startAgent.sh --udp-port 7777 --tcp-port 7777
  1. 编辑Jmeter脚本文件,添加Perfmon监听器。

    可设置将监控数据输出到jtl文件用于后续分析

  2. 自动生成图片

    需借助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 使用技巧的更多相关文章

  1. 使用jmeter进行性能测试-Jmeter教程及技巧汇总 (转)

    http://www.jmeter.cf/loadtesting-jmeter.html 为什么使用jmeter, 它免费开源, 不断发展, 功能逐渐强大. 可以做功能,负载, 性能测试.一套脚本可以 ...

  2. Jmeter3.1 使用技巧

    一.JMeter官网 下载地址 http://jmeter.apache.org/download_jmeter.cgi Jmeter wiki https://wiki.apache.org/jme ...

  3. Akka.net 性能测试兼使用小技巧

    最近想研究一下分布式开发,先拿了akka.net 跑一下性能 参考自己写个网络实现,一般在本机通讯,300M每秒的传输率,作为参考 嗯,先说结果,用Akka.net直接发bytearray,最后也只有 ...

  4. lr各种问题以及解决办法

    LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen.exe文件 遇到flight界面为空的解决 ...

  5. linux apache服务器优化建议整理(很实用)

    转载:http://www.cnblogs.com/zhongbin/archive/2013/06/11/3131865.html 1.apache服务器的time_wait过多 fin_wait1 ...

  6. 【性能测试】常见的性能问题分析思路(二)案例&技巧

    上一篇介绍了性能问题分析的诊断的基本过程,还没看过的可以先看下[性能测试]常见的性能问题分析思路-道与术,精炼总结下来就是,当遇到性能问题的时候,首先分析现场,然后根据现象去查找对应的可能原因,在通过 ...

  7. 性能测试常用sql技巧_Oracle

    做了一段时间的性能测试,把自己在性能测试过程中,使用到的Oracle中用到的sql语句整理一番,做个备忘: (1)多个字段以某种格式拼接 "||"字符串拼接符; 示例:将" ...

  8. 【转】性能测试工具JMeter的使用技巧

    在这此对新版本jmeter的学习+温习的过程,发现了一些以前不知道的功能,所以,整理出来与大分享.本文内容如下. 1.如何使用英文界面的jmeter 2.如何使用镜像服务器 3.Jmeter分布式测试 ...

  9. jmeter3.0生成html格式的dashboard性能测试结果

    jmeter3.0以上支持生成dashboard的html报告,官网介绍:https://jmeter.apache.org/usermanual/generating-dashboard.html ...

随机推荐

  1. SpringInAction学习笔记(一):核心概念

    Spring自带了多种应用上下文 AnnotationConfigApplicationContext:从一个或多个java配置类中加载应用上下文 AnnotationConfigWebApplica ...

  2. C++类第五课:类的使用(三)[个人见解]

    继承既然已经知道了是什么意思了,下面我们来学封装! 什么是封装?我们来举个例子: 1.你不能随意挥霍父母的血汗钱,血汗钱是作为他们的私有财产,而父母因为某些原因会主动给你,你才能用的舒心,否则父母不会 ...

  3. 学习笔记-----《Pattern Recognition and Machine Learning》Christopher M. Bishop

    Preface 模式识别这个词,以前一直不懂是什么意思,直到今年初,才开始打算读这本广为推荐的书,初步了解到,它的大致意思是从数据中发现特征,规律,属于机器学习的一个分支. 在前言中,阐述了什么是模式 ...

  4. vty密码登录,到AAA验证登录,以及远程配置网络

    华为的的最简易的远程登录方式,就是密码登录了. 配置命令如下图: 最重要的是权限: 访问级(0级).监控级(1级).系统级(2级)和管理级(3级) 在以上基础上,做了一个远程配置方式,通过一台,修改其 ...

  5. C++初步 2

    对象数组: Coordinate coord[3];  栈区           Coordinate *p=new Coordinate[3];    堆区 /* * Coordinate.h * ...

  6. Widows 和Linux 查看和操作端口方法

    Windows 打开cmd1.netstat -n查看本机的使用的所有端口①.proto表示协议 有tcp和udp两种②.Local Address 表示本机的IP,后面跟的是我们使用的端口号③.Fo ...

  7. microk8s

    https://microk8s.io/ video guide: sudo snap install microk8s --classic #snap install microk8s --clas ...

  8. BUAA_OO Summary——多项式求导问题

    从C.DS.计组一路折磨过来, 几乎都在采用过程化.函数式的编程思想.初接触面向对象的项目开发,经过了三周的对多项式求导问题的迭代开发,经历了设计.coding.测评环节,算是对面向对象有了一定的认识 ...

  9. mac本webstrom破解

    之前忙着加班一直没搞,有时间解决一下 首先编辑hosts文件 https://jingyan.baidu.com/article/f3ad7d0f55154309c3345bdd.html Mac系统 ...

  10. [Swift]LeetCode94. 二叉树的中序遍历 | Binary Tree Inorder Traversal

    Given a binary tree, return the inorder traversal of its nodes' values. Example: Input: [1,null,2,3] ...