Jmeter3.1 使用技巧-阿里云开发者社区

开发者社区> 美码师> 正文

Jmeter3.1 使用技巧

简介: 一、JMeter官网 下载地址http://jmeter.apache.org/download_jmeter.cgi Jmeter wikihttps://wiki.apache.org/jmeter 二、概念 ElapsedTime 消耗时间,与ResponseTime/SampleTime一致...
+关注继续查看

一、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指定目标路径(必须为空)

  2. 从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

img_9b09a36f6de95886f52ce82fa1e89c88.jpe

作者: zale

出处: http://www.cnblogs.com/littleatp/, 如果喜欢我的文章,请关注我的公众号

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接  如有问题, 可留言咨询.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用jMeter对基于SAP ID service进行Authentication的Restful API进行并发测试
这篇文章本来Jerry只在SAP社区上写了英文版的,后来有两位做Marketing Cloud开发的德国同事,写邮件询问关于文章的更多细节,声称这种方式对他们自己的API性能测试很有用,所以我觉得还是值得用中文再写一遍。
1133 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10099 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10888 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13897 0
jMeter 里如何使用 variable
jMeter 里如何使用 variable
4 0
jMeter 里如何使用 properties
jMeter 里如何使用 properties
6 0
使用jmeter进行网站的压力测试
开发工作中经常会遇到要测试自己做的网页的一个性能参数。今天就介绍一款apache公司出的 jmeter测试工具的使用.
811 0
+关注
美码师
美码师,老码农一枚,唯美食与技术不能辜负,欢迎交流及打扰!
73
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载