Jmeter分布式、测试报告、并发数计算、插件添加方式、常用图表
Jmeter分布式
应用场景
当单个测试机无法模拟用户要求的业务场景时,可以使用多台测试机进行模拟,就是Jmeter的分布
式测试。
Jmeter分布式执行原理

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

启动时如果显示的是上面这样的异常
原因:jmeter.properties的文件找到server.rmi.ssl.disable=false,改为true,并把前面的#去掉
重新启动:

- 控制机(界面方式启动):
- 进入bin目录,运行jmeter.bat,启动jmeter
选择菜单:运行–>远程启动/远程启动全部

案例:
1.请求:http://www.baidu.com
2.一台控制机和两台执行机,做分布式;要求控制机启动,两台执行机执行,反馈结果。
操作步骤:
1.配置代理机一,并启动
jmeter1:启动jmeter-server.bat文件

2.配置代理机二,并启动
jmeter2:启动jmeter-server.bat文件

3.配置控制机,并启动
主程序:启动jmeter.bat文件,启动jmeter,运行–>远程启动/远程全部启动

4.添加线程组
5.添加HTTP请求-百度
6.添加查看结果树

Jmeter测试报告
聚合报告
作用:收集性能测试结束后,系统的各项性能指标。如:响应时间、并发数、吞吐量、错误率等。
位置:测试计划–>右键–>监听器–>聚合报告

参数介绍:
- Label:每个请求的名称
- 样本:各请求发出的数量
- 平均值:平均响应时间(单位:毫秒)
- 中位数:中位数,50%<=时间
- 90%百分比:90%<=时间
- 95%百分比:95%<=时间
- 99%百分比:99%<=时间
- 最小值:最小响应时间
- 最大值:最大响应时间
- 异常%:请求的错误率
- 吞吐量:吞吐量,默认情况下表示每秒完成的请求数,一般认为它是TPS。
- 接收KB/sec:每秒接收到的千字节数
- 发送KB/sec:每秒发送的千字节数
补充:
- 正常情况下,响应时间的结果取平均值
- 当响应时间最大值特别高,(超出平均水平特别多),导致平均值不能代表正常/大部分水平时,可以使用百分比时间。
案例:
1、请求:https://www.baidu.com
2、模拟5个用户并发,控制服务器QPS为20,运行时长设置为1分钟
3、添加聚合报告,收集系统性能指标:响应时间、吞吐量、错误率、网路速率
实现:

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测试报告
执行案例:

Jmeter测试报告的内容介绍
仪表盘统计:

APDEX(应用性能指标):
- APDEX:满意度,范围在0-1之间,1表示达到所有用户均满意
- T(Toleration threshold):容忍或满意阈值
-F(Frustration threshold):失败阈值
- Request Summary(请求总结):
-成功与失败的请求占比,KO指失败率,OK指成功率
-
详细信息:
HTML测试报告:
-chart(详细信息图标):它包括Throughput(吞吐量)、Response Times(响应时间)等


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

普通计算方法:
计算公式: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请求数每秒就能满足线上需要。
二八原则的估算结果会比平均值的计算方法更能满足用户需求。
计算稳定性测试并发量:

结合二八原则计算公式:TPS = 总请求数 * 80% /(总时间*20%)
- 需要在测试环境模拟用户正常业务操作(稳定性测试)的并发量为:
TPS: 40474 * 0.8 请求数 / 16 * 3600 * 0.2秒 = 2.81请求数/秒
- 并发TPS =有效请求数 * 80% /(有效时间*20%)
- 当运营数据统计越精确时,计算出的并发TPS与实际的越接近
计算压力测试并发量:

计算压力测试的并发数: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插件
下载插件管理包步骤:
- 下载包管理工具Jar包
- 将包管理工具jar包添加到Jmeter放入到 lib\ext目录下
- 重启Jmeter,可以在选项下看到插件管理器

安装第三方插件的步骤:
- 打开Plugins Manager插件管理器
- 选择Avaiable Plugins,当前可用的插件
- 选择需要下载的插件(等待右方文本内容展示出来)
- 下载右下角的下载按钮,自动的完成下载,Jmeter会自动重启

需要下载的插件:

并发数及Jmeter性能测试常用图表
性能测试常用图表
Concurrency Thread Group线程组
阶梯线程组:作用是阶梯加压;图形界面显示运行状态
添加方式:测试计划–>线程(用户)—>Concurrency Thread Group

参数介绍:
- 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

Bytes Throughput per Second
每秒字节吞吐量:作用是查看服务器吞吐流量(单位/字节)
添加方式:测试计划–>线程组–>监听器–>Bytes Throughput Over Time

每秒性能指标统计:
作用:
- 性能测试的结果统计,以聚合报告的结果为准
- 每秒性能指标的作用是:查看系统长时间运行过程中是否有异常出现,有则进一步分析。
练习:
1、请求:https://www.baidu.com
2、模拟5个用户并发,控制服务器QPS为20,运行时长设置为1分钟
3、添加性能测试常用图表

PerfMon组件监控服务器资源
作用:用来监控服务端的性能资源指标的工具,包括CPU、内存、磁盘、网络等性能数据。
添加方法:线程组–>监听器–>jp@gc - PerfMon Metrics Collector
注意:使用之前需要在服务器端安装监听服务程序并启动

监控服务器资源指标的步骤:
- 下载安装包ServerAgent-2.2.3.zip,链接地址:https://github.com/undera/perfmon-agent
- 上传到服务器上,并解压ServerAgent-2.2.3.zip
- 启动,如果是windows运行ServerAgent.bat,如果是linux 运行startAgent.sh
- 启动这个工具后,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.添加聚合报告

监控性能指标的步骤(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

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

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

相关文章:
Jmeter分布式、测试报告、并发数计算、插件添加方式、常用图表
Jmeter分布式 应用场景 当单个测试机无法模拟用户要求的业务场景时,可以使用多台测试机进行模拟,就是Jmeter的分布 式测试。 Jmeter分布式执行原理 Jmeter分布测试时,选择其中一台作为控制机(Controller),…...
3D三维模型展示上传VR全景创建H5开源版开发
3D三维模型展示上传VR全景创建H5开源版开发 新增三级分类(项目分类、项目、默认场景) 新增热点 前台创建项目、场景 场景跳转、提示信息 新增热点图标选择 新增预览场景是显示关联场景 新增3D模型展示功能 当然可以!以下是一个关于3D三维模…...
js中!emailPattern.test(email) 的test是什么意思
test 是 JavaScript 正则表达式(RegExp)对象的方法之一,用于测试一个字符串是否与正则表达式匹配。正则表达式是一种用于匹配字符串的模式,通常用于验证输入数据、查找和替换文本等。 使用 test 方法 test 方法语法如下…...
半监督医学图像分割:基于对抗一致性学习和动态卷积网络的方法| 文献速递-深度学习结合医疗影像疾病诊断与病灶分割
Title 题目 Semi-Supervised Medical Image Segmentation Using Adversarial Consistency Learning and Dynamic Convolution Network 半监督医学图像分割:基于对抗一致性学习和动态卷积网络的方法 01 文献速递介绍 医学图像分割在计算辅助诊断和治疗研究中扮演…...
Scikit-Learn支持向量机回归
Scikit-Learn支持向量机回归 1、支持向量机回归1.1、最大间隔与SVM的分类1.2、软间隔最大化1.3、支持向量机回归1.4、支持向量机回归的优缺点2、Scikit-Learn支持向量机回归2.1、Scikit-Learn支持向量机回归API2.2、支持向量机回归初体验2.3、支持向量机回归实践(加州房价预测…...
ElasticSearch的桶聚合
桶聚合 在前面几篇博客中介绍的聚合指标是指符合条件的文档字段的聚合,有时还需要根据某些维度进行聚合。例如在搜索酒店时,按照城市、是否满房、标签和创建时间等维度统计酒店的平均价格。这些字段统称为“桶”,在同一维度内有一个或者多个桶。例如城市桶,有“北京”、“天…...
vue引入aos.js实现滚动动画
aos.js官方网站:http://michalsnik.github.io/aos/ aos.js介绍 AOS (Animate on Scroll) 是一个轻量级的JavaScript库,用于实现当页面元素随着用户滚动进入可视区域时触发动画效果。它不需要依赖 jQuery,可以很容易地与各种Web开发框架&#…...
python+selenium之点击元素报错:‘NoneType‘ object has no attribute ‘click‘
今日遇到一个很奇怪的问题 case1:当使用顺序结构直接从登录到点击页面菜单,则可以正常点击菜单 case2:若把登录分离开,采用封装的方法点击菜单则会提示:‘NoneType’ object has no attribute ‘click’ 具体页面如下,…...
Web 品质国际化
Web 品质国际化 随着互联网的普及和全球化的推进,Web品质国际化已成为现代企业发展的必然趋势。Web品质国际化不仅仅是网站的多语言支持,更是一种全面的文化、技术和市场适应性的体现。本文将探讨Web品质国际化的概念、重要性以及实施策略。 一、Web品质国际化的概念 Web品…...
绿色免费离线版JS加密混淆工具 - 支持全景VR加密, 小程序js加密, H5网站加密
自从我们推出在线版的免费JS加密混淆工具以来,受到了广大用户的热烈欢迎。特别是全景开发人员,他们使用该工具加密VR插件的JS代码, 添加域名锁等,都非常有效地保护了插件的代码资源。 最近,我们收到了许多用户的反馈,…...
文心一言 VS 讯飞星火 VS chatgpt (284)-- 算法导论21.2 2题
二、对定理 21.1 的整体证明进行改造,得到使用链表表示和加权合并启发式策略下的 MAKE-SET 和 FIND-SET 的摊还时间上界为 O(1),以及 UNION 的摊还时间上界为 O(lgn)。如果要写代码,请用go语言。 文心一言: 在Go语言中实现使用链…...
计算机组成原理网课笔记2
存储系统基本概念...
C++ | Leetcode C++题解之第143题重排链表
题目: 题解: class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNode(head);ListNode* l1 head;ListNode* l2 mid->next;mid->next nullptr;l2 reverseList(l2);mergeList(l1, l…...
手写一个JSON可视化工具
前言 JSON 平时大家都会用到,都不陌生,今天就一起来实现一个 JSON 的可视化工具。 大概长成下面的样子: 树展示 相比于现有的一些 JSON 格式化工具,我们今天制作的这个小工具会把 JSON 转为树去表示。其中: 橙色标…...
洁盟超声波清洗机怎么样?2024爆款机型声波清洗机测评、一篇看懂
随着现在近视率的逐年上升,戴眼镜的人群越来越多!当然他们也在面临着一个眼镜清洗的问题!因为长期佩戴眼镜,镜框还有镜片上面都是会积累灰尘、油污、污垢以及细菌,脏脏的不仅令眼镜不美观,同时在长期的佩戴…...
react 自定义鼠标右键点击事件
功能:鼠标右键点击节点时,出现“复制”功能,点击其他部位,隐藏“复制”;鼠标右键事件的文案,始终在鼠标点击位置的右下方;点击复制,提示复制成功 效果图: 代码࿱…...
make V=1 分析
文章目录 make V1 make V1 # 顶层 Makefile 580 -include include/config/auto.conf 584 -include include/config/auto.conf.cmd ...... 593 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd 594 $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig 595…...
每天一个数据分析题(三百五十八)-图表决策树
图中是某公司记录销售情况相关的表建立好的多维分析模型,请根据模型回答以下问题: 1)该模型属于哪种连接模式? A. 星型模式雪花模式 B. 星座模式雪花模式 C. 星座模式星型模式雪花模式 D. 以上都不对 数据分析认证考试介绍…...
HarmonyOS 页面路由(Router)
1. HarmonyOS页面路由(Router) 页面路由指在应用程序中实现不同页面之间的跳转和数据传递。HarmonyOS提供了Router模块,通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面。本文将从页面跳转、页面返回和页面返回前增加一个询问…...
Python 正则表达式语法
Python 中的正则表达式是通过 re 模块提供的,它支持大多数正则表达式的语法。以下是一些基本的正则表达式语法元素: 字符匹配: . 匹配任意单个字符,除了换行符。\d 匹配任意数字,等同于 [0-9]。\D 匹配任意非数字字符,…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
