Jmeter分布式、测试报告、并发数计算、插件添加方式、常用图表

Jmeter分布式

应用场景
当单个测试机无法模拟用户要求的业务场景时,可以使用多台测试机进行模拟,就是Jmeter的分布
式测试。

Jmeter分布式执行原理

image-20240607213858341

Jmeter分布测试时,选择其中一台作为控制机(Controller),其它机器作为代理机(Agent)

- 执行时,控制机会把脚本发送到每台代理机上

-代理机拿到脚本后就开始执行,代理机执行时不需要启动Jmeter界面,可以理解它是通过命令行模式执行的。

-执行完毕后,代理机会把结果传给控制机,控制机会收集所有代理机的信息并汇总。

分布式相关注意事项

  • 系统上的防火墙关闭或打开正确的端口

  • 所有控制机、代理机、服务器都在同一网络上

  • 所有机器的Jmeter和Java版本必须一致

  • 关闭RMI SSL开关

Jmeter分布式配置和执行

配置 —修改bin/jmeter.properties文件:

  • 代理机

    - 修改服务端口:保证每个代理机都能正常启动。如果是在同一台机器上演示需要使用不同的端口,多台机器可以不修改。例如:server_port=1999

    - 将RMI SSL设置为禁用。例如 server.msi.ssl.disable=true

  • 控制机

​ - 配置代理机远程地址:配置每个代理机的IP+port,多个代理机之间用’,'连接

​ 例如:remote_hosts=192.168.182.100:1099,192.168.182.101:2999

​ - 将RMI SSL设置为禁用。例如: server.msi.ssl.disable=true

执行

- 代理机(命令行启动)

- 进入bin目录,运行jmeter-server.bat,启动jmeter

image-20240607220045621

启动时如果显示的是上面这样的异常

原因:jmeter.properties的文件找到server.rmi.ssl.disable=false,改为true,并把前面的#去掉

重新启动:

image-20240607220453013

- 控制机(界面方式启动)

- 进入bin目录,运行jmeter.bat,启动jmeter

选择菜单:运行–>远程启动/远程启动全部

image-20240607220850688

案例:

1.请求:http://www.baidu.com

2.一台控制机和两台执行机,做分布式;要求控制机启动,两台执行机执行,反馈结果。

操作步骤

1.配置代理机一,并启动

jmeter1:启动jmeter-server.bat文件

image-20240608205042541

2.配置代理机二,并启动

jmeter2:启动jmeter-server.bat文件

image-20240608204919101

3.配置控制机,并启动

主程序:启动jmeter.bat文件,启动jmeter,运行–>远程启动/远程全部启动

image-20240608205444559

4.添加线程组

5.添加HTTP请求-百度

6.添加查看结果树

image-20240608210608301

Jmeter测试报告

聚合报告

作用:收集性能测试结束后,系统的各项性能指标。如:响应时间、并发数、吞吐量、错误率等。

位置:测试计划–>右键–>监听器–>聚合报告

image-20240609142056388

参数介绍:

- Label:每个请求的名称

- 样本:各请求发出的数量

- 平均值:平均响应时间(单位:毫秒)

- 中位数:中位数,50%<=时间

- 90%百分比:90%<=时间

- 95%百分比:95%<=时间

- 99%百分比:99%<=时间

- 最小值:最小响应时间

- 最大值:最大响应时间

- 异常%:请求的错误率

- 吞吐量:吞吐量,默认情况下表示每秒完成的请求数,一般认为它是TPS。

- 接收KB/sec:每秒接收到的千字节数

- 发送KB/sec:每秒发送的千字节数

补充:

  • 正常情况下,响应时间的结果取平均值
  • 当响应时间最大值特别高,(超出平均水平特别多),导致平均值不能代表正常/大部分水平时,可以使用百分比时间。
案例:
1、请求:https://www.baidu.com
2、模拟5个用户并发,控制服务器QPS为20,运行时长设置为1分钟
3、添加聚合报告,收集系统性能指标:响应时间、吞吐量、错误率、网路速率

实现:

image-20240609144321544

HTML测试报告

作用:Jmeter支持生成HTML测试报告,以便从测试计划中获得图表和统计信息

命令

jmeter -n -t [jmx file] -l [result file] -e -o [html report folder]
eg:jmeter -n -t hello.jmx -l result.jtl -e -o ./report

参数描述

-n:非GUI模式执行的Jmeter

-t [jmx file]:测试计划保存的路径及.jmx文件名,路径可以是相对路径也可以是绝对路径

-l [result file]:保存生成测试结果的文件,jtl文件格式

- e:测试结束后,生成测试报告

- o [html report folder]:存放生成测试报告的路径,路径可以是相对路径也可以是绝对路径

注意:result.jtl和report会自动生成,如果在执行命令时result.jtl和report已存在,必须用先删除,否则在运行命令时,会报错。

案例:
1、请求:https://www.baidu.com
2、模拟5个用户并发,控制服务器QPS为20,运行时长设置为1分钟
3、使用命令行的方式运行,并收集HTML测试报告

执行案例:

image-20240609150137943

Jmeter测试报告的内容介绍

仪表盘统计:

image-20240609150337150

APDEX(应用性能指标):

- APDEX:满意度,范围在0-1之间,1表示达到所有用户均满意

- T(Toleration threshold):容忍或满意阈值

-F(Frustration threshold):失败阈值

- Request Summary(请求总结)

-成功与失败的请求占比,KO指失败率,OK指成功率

  • 详细信息:

    HTML测试报告:

    -chart(详细信息图标):它包括Throughput(吞吐量)、Response Times(响应时间)等

image-20240609152015343

image-20240609151740501

并发数

性能测试时TPS计算

性能测试时的TPS,大都是根据用户真实的业务数据(运营数据)来计算的

运营数据

image-20240609152523743

普通计算方法

计算公式:TPS=总请求/总时间

数据分析

根据数据统计,在2019年第32周,日均PV为4.13万,可以估算为1天有4.13万请求(1次浏览都至少对应一个请求)

总请求数=4.13万 请求数=41300

总时间 = 1天 =1*24小时 =24*3600秒

套入公式

TPS = 41300请求数/24*3600秒 =0.48请求数/秒

结论:按照普通计算方法,理论上每秒能够处理0.48请求,就可以满足线上的需要(只能满足最基本的要求,但是不能很好覆盖系统正常的使用情况)

二八原则计算方法

二八原则就是指80%的请求在 20%的时间内完成

计算公式:TPS=总请求*80%/(总时间*20%)

套入公式

TPS: 41300*0.8请求数/24*3600*0.2秒 =1.91请求数/秒

结论:按照二八原则计算,在测试环境我们的TPS只要达到1.91请求数每秒就能满足线上需要。

二八原则的估算结果会比平均值的计算方法更能满足用户需求。

计算稳定性测试并发量

image-20240609154724439

结合二八原则计算公式:TPS = 总请求数 * 80% /(总时间*20%)

- 需要在测试环境模拟用户正常业务操作(稳定性测试)的并发量为:

TPS: 40474 * 0.8 请求数 / 16 * 3600 * 0.2秒 = 2.81请求数/秒

  • 并发TPS =有效请求数 * 80% /(有效时间*20%)
  • 当运营数据统计越精确时,计算出的并发TPS与实际的越接近

计算压力测试并发量

image-20240609155930374

计算压力测试的并发数:TPS =峰值请求数/峰值时间 * 系数

-需要在测试环境模拟用户峰值业务操作(压力测试)的并发量为:

TPS = 8853 请求数 / 3600秒 * 3(系数) =7.38请求数/秒

  • 满足峰值请求时间段内的负载量,系数取决于项目组对于未来业务量的评估

练习:

某购物商场,经过运营统计,正常一天成交额为100亿,客单价平均为300元,交易时间主要

为10:00-14:00,17:00-24:00,其中19:00-20:00的成交量最大,大约成交20亿。

现系统升级,需要进行性能测试,保证软件在上线后能稳定运行。

请计算出系统稳定性测试时的并发(负载)量,及保证系统峰值业务时的并发(负载)量。

稳定性并发量

  • 并发TPS=有效请求数 * 80% / 有效时间*20%

  • 并发TPS= (100亿/300*80%)/(3600*11个小时*20%)

压力并发量:

  • 并发TPS=峰值请求数/峰值时间 * 系数
  • 压力TPS=(20亿/300)/(3600*1个小时)*系数

Jmeter下载第三方插件

说明:先下载Jmeter插件管理工具包,再用此包下载Jmeter插件

下载插件管理包步骤

  1. 下载包管理工具Jar包
  2. 将包管理工具jar包添加到Jmeter放入到 lib\ext目录下
  3. 重启Jmeter,可以在选项下看到插件管理器

image-20240609162739672

安装第三方插件的步骤

  1. 打开Plugins Manager插件管理器
  2. 选择Avaiable Plugins,当前可用的插件
  3. 选择需要下载的插件(等待右方文本内容展示出来)
  4. 下载右下角的下载按钮,自动的完成下载,Jmeter会自动重启

image-20240609163709689

需要下载的插件:

image-20240609212135144

并发数及Jmeter性能测试常用图表

性能测试常用图表

Concurrency Thread Group线程组

阶梯线程组:作用是阶梯加压;图形界面显示运行状态

添加方式:测试计划–>线程(用户)—>Concurrency Thread Group

image-20240609212427806

参数介绍:

  • Target Concurrency: 目标并发(线程数)
  • Ramp Up Time:加速时间
  • Ramp-Up Steps Count:加速步骤计数
  • Hold Target Rate Time:运行时间
  • Time Unit:单位时间(分钟或者秒)
  • Thread Iterations Limit:线程循环次数
  • Log Threads Status into File:日志记录

Transations per Second

每秒完成事务数:作用是统计各事务每秒钟成功的事务个数

添加方式:测试计划–>线程组–>监听器–>Transations per Second

image-20240609213735077

Bytes Throughput per Second

每秒字节吞吐量:作用是查看服务器吞吐流量(单位/字节)

添加方式:测试计划–>线程组–>监听器–>Bytes Throughput Over Time

image-20240610201601425

每秒性能指标统计

image-20240610202018028

作用

  • 性能测试的结果统计,以聚合报告的结果为准
  • 每秒性能指标的作用是:查看系统长时间运行过程中是否有异常出现,有则进一步分析。

练习:

1、请求:https://www.baidu.com
2、模拟5个用户并发,控制服务器QPS为20,运行时长设置为1分钟
3、添加性能测试常用图表

image-20240610203826192

PerfMon组件监控服务器资源

作用:用来监控服务端的性能资源指标的工具,包括CPU、内存、磁盘、网络等性能数据。

添加方法:线程组–>监听器–>jp@gc - PerfMon Metrics Collector

注意:使用之前需要在服务器端安装监听服务程序并启动

image-20240610204338541

监控服务器资源指标的步骤:

  1. 下载安装包ServerAgent-2.2.3.zip,链接地址:https://github.com/undera/perfmon-agent
  2. 上传到服务器上,并解压ServerAgent-2.2.3.zip
  3. 启动,如果是windows运行ServerAgent.bat,如果是linux 运行startAgent.sh
  4. 启动这个工具后,jmeter的插件jp@gc - PerfMon Metrics Collector就可以收集服务端的资源使用率,并在jmeter中查看了。
案例一:
1. 启动windows上安装的Tpshop商城项目
2. 使用Jmeter编写脚本,访问首页,控制运行时间为60s,并同步监控服务器资源指标。

监控性能指标的步骤(windows服务器)

1.上传ServerAgent-2.2.3.zip到windows服务器上,并进行解压

2.启动ServerAgent程序ServerAgent.bat

3.添加线程组,配置持续时间为60s

4.添加HTTP请求-首页

5.添加PerfMon组件

6.添加聚合报告

image-20240610205748715

监控性能指标的步骤(linux服务器):

  • 下载ServerAgent程序,并上传到服务器上
    • 通过xshell工具上传到指定的目录下
  • 手动启动ServerAgent程序,windows服务器startAgent.bat,linux服务器startAgent.sh
(1)解压缩: unzip ServerAgent2.2.3.zip
(2)进入ServerAgent目录,赋权限:
cd ServerAgent-2.2.3
chmod -R 777 *
(3)启动ServerAgent程序
./startAgent.sh

image-20240610212003447

  • 添加HTTP请求 - 请求litemall首页

image-20240610213149644

  • 在Jmeter中添加PerfMon监控组件,并配置

image-20240610213117740

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/696891.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第十二届蓝桥杯单片机国赛练习代码

文章目录 前言一、问题重述二、主函数总结 前言 第十五蓝桥杯国赛落幕已有十天&#xff0c;是时候总结一下&#xff0c;这个专栏也将结束。虽然并没有取得预期的结果&#xff0c;但故事结尾并不总是美满的。下面是赛前练习的第十二届国赛的代码。 一、问题重述 二、主函数 完整…

JavaScript前端技术入门教程

引言 在前端开发的广阔天地中&#xff0c;JavaScript无疑是最耀眼的一颗明星。它赋予了网页动态交互的能力&#xff0c;让网页从静态的文本和图片展示&#xff0c;进化为可以与用户进行实时交互的丰富应用。本文将带您走进JavaScript的世界&#xff0c;为您提供一个入门级的教…

文件的基础必备知识(初学者入门)

1. 为什么使用文件 2. 什么是文件 3. 二进制文件和文本文件 4. 文件的打开和关闭 1.为什么使用文件 我们写的程序数据是存储在电脑内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失&#xff0c;等程序再次运行时&#xff0c;上次的数据已经消失。面…

C++~~期末复习题目讲解---lijiajia版本

目录 1.类和对象 &#xff08;3&#xff09;创建对象的个数 &#xff08;3&#xff09;全局变量&#xff0c;局部变量 &#xff08;4&#xff09;构造函数的执行次数 &#xff08;5&#xff09;静态动态析构和构造顺序 &#xff08;6&#xff09;初始化顺序和声明顺序 &a…

MySQL数据库的基础:逻辑集合数据库与表的基础操作

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

简单聊聊大数据解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Spring5

文章目录 1. Spring 是什么&#xff1f;2. IoC3. Spring Demo4. IoC 创建对象的方式 / DI 方式注入的默认参数在哪里设定? 5. Spring 配置tx:annotation-driven 用于启用基于注解的事务管理 6. Bean的作用域7. 在Spring中有三种自动装配的方式1. 在xml中显式的配置2. 在java中…

node的安装

node是前端开发环境&#xff0c;所以运行前端程序需要安装和配置node 1. 下载安装node 去node官网选择你需要的版本进行下载 Node.js — Download Node.js (nodejs.org) ​ 下载到本地后一路点击next傻瓜式安装&#xff0c;安装成功后测试是否安装成功 node -v 显示node版…

电路防护-贴片陶瓷气体放电管

贴片陶瓷气体放电管 GDT工作原理GDT主要特性参数典型电路压敏电阻与 TVS 管的区别 GDT工作原理 陶瓷气体放电管是一种电子器件&#xff0c;其工作原理基于气体放电现象。这种管子的内部填充了一种特定的气体&#xff0c;通常是氖气或氩气。当管子两端施加足够的电压时&#xf…

刚刚❗️德勤2025校招暑期实习测评笔试SHL测评题库已发(答案)

&#x1f4e3;德勤 2024暑期实习测评已发&#xff0c;正在申请的小伙伴看过来哦&#x1f440; ㊙️本次暑期实习优先考虑2025年本科及以上学历的毕业生&#xff0c;此次只有“审计及鉴定”“税务与商务咨询”两个部门开放了岗位~ ⚠️测评注意事项&#xff1a; &#x1f44…

USB转I2C转SPI芯片CH341

CH340与CH341区别 CH340主要用于将USB转换为各种串口&#xff0c;CH340H和CH340S可以实现USB转并口。 CH341和340的不同之处在于CH341提供I2C和SPI接口&#xff0c;方便连接到I2C或SPI总线操作相关的器件。 CH341主要有6种封装。见表1. CH341T SSOP-20封装和丝印 USB 总线转接…

大模型基础——从零实现一个Transformer(2)

大模型基础——从零实现一个Transformer(1) 一、引言 上一章主要实现了一下Transformer里面的BPE算法和 Embedding模块定义 本章主要讲一下 Transformer里面的位置编码以及多头注意力 二、位置编码 2.1正弦位置编码(Sinusoidal Position Encoding) 其中&#xff1a; pos&…

【JVM】从编译后的指令集来再次理解++i和i++的执行顺序

JVM为什么要选用基于栈的指令集架构 与基于寄存器的指令集架构相比&#xff0c;基于栈的指令集架构不依赖于硬件&#xff0c;因此可移植性更好&#xff0c;跨平台性更好因为栈结构的特性&#xff0c;永远都是先处理栈顶的第一条指令&#xff0c;因此大部分指令都是零地址指令&…

SpringMVC[从零开始]

SpringMVC SpringMVC简介 1.1什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M:Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xff1a;专…

对猫毛过敏?怎么有效的缓解过敏症状,宠物空气净化器有用吗?

猫过敏是一种常见的过敏反应&#xff0c;由猫的皮屑、唾液或尿液中的蛋白质引起。这些蛋白质被称为过敏原&#xff0c;它们可以通过空气传播&#xff0c;被人体吸入后&#xff0c;会触发免疫系统的过度反应。猫过敏是宠物过敏中最常见的类型之一&#xff0c;对许多人来说&#…

【Java】static 修饰变量

static 一种java内置关键字&#xff0c;静态关键字&#xff0c;可以修饰成员变量、成员方法。 static 成员变量 1.static 成员变量2.类变量图解3.类变量的访问4.类变量的内存原理5.类变量的应用 1.static 成员变量 成员变量按照有无static修饰&#xff0c;可以分为 类变量…

Python学习打卡:day02

day2 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 8、字符串的三种定义方式 字符串在Python中有多种定义形式 单引号定义法&#xff1a; name 黑马程序员双引号定义法&#xff1a; name "黑马程序…

如何为色盲适配图形用户界面

首发日期 2024-05-25, 以下为原文内容: 答案很简单: 把彩色去掉, 测试. 色盲, 正式名称 色觉异常. 众所周知, 色盲分不清颜色. 如果用户界面设计的不合理, 比如不同项目只使用颜色区分, 而没有形状区分, 那么色盲使用起来就会非常难受, 甚至无法使用. 色盲中最严重的情况称为…

2024PTA算法竞赛考试编程题代码

目录 前言 题目和代码 L1-006 连续因子 L1-009 N个数求和 L2-004 这是二叉搜索树吗&#xff1f; L2-006 树的遍历 L2-007 家庭房产 L4-118 均是素数 L4-203 三足鼎立 L2-002 链表去重 L2-003 月饼 L2-026 小字辈 L4-201 出栈序列的合法性 L4-205 浪漫侧影 前言 所…

【数据结构】AVL树(平衡二叉树)

目录 一、AVL树的概念二、AVL树的节点三、AVL树的插入四、AVL树的旋转1.插入在较高左子树的左侧&#xff0c;使用右单旋2.插入在较高右子树的右侧&#xff0c;使用左单旋3.插入较高左子树的右侧&#xff0c;先左单旋再右单旋4.插入较高右子树的左侧&#xff0c;先右单旋再左单旋…