性能测试05|JMeter:分布式、报告、并发数计算、性能监控
目录
一、JMeter分布式
1、应用场景
2、原理
3、分布式相关注意事项
4、分布式配置与运行
二、JMeter报告
1、聚合报告
2、HTML报告
三、并发用户数(线程数)计算
四、JMeter下载第三方插件
五、性能监控
1、Concurrency Thread Group 线程组
2、性能测试常用图标
1️⃣Transactions per Second
2️⃣Bytes Throughput per Second
3、PerfMon组件监控服务器硬件资源
一、JMeter分布式
1、应用场景
当单个测试机无法模拟用户要求的业务场景时,可以使用多台测试机进行模拟,就是Jmeter的分布 式测试。
2、原理
3、分布式相关注意事项
- 关闭防火墙
- 所有的控制机、代理机、服务器都在同一个网络上
- 所有机器的JMeter 和Java版本必须一致
- 关闭 RMI SSL 开关:在JMeter配置文件里改
4、分布式配置与运行
建立代理机器:
因为JMeter是免安装的,为了方便起见,所以可以直接把 apache-jmeter-5.6.3 安装文件复制粘贴放别的文件夹中,复制n份就有了n台代理机器。此时JMerer的原文件就是控制机。
这种方式建立的代理机器就保证了网络和版本一致。
操作步骤:假设只需要两台代理机即可完成需求
- 配置代理机一,并启动
- 配置代理机二,并启动
- 配置控制机,并启动
- 添加线程组
- 添加HTTP请求-百度
- 添加查看结果树
二、JMeter报告
1、聚合报告
【注意】
- 正常情况下,响应时间的结果取平均值
- 当响应时间最大值特别高(超出平均水平特别多),导致平均值不能代表正常/大部分水平时,可以使用百分比时间
2、HTML报告
作用:JMeter支持生成HTML测试报告,以便从测试计划中获得图表和统计信息
命令:
# 格式
jmeter -n -t [jmx file] -1 [result file] -e -o [html report folder]# 例子
jmeter -n -t hello.jmx -1 result.jtl -e -o ./report
参数描述:
另外:平常在JMeter中保存的的测试文件就是.jmx文件
案例:


三、并发用户数(线程数)计算
普通方法:
- 并发tps = 总请求数/总时间
- 只能满足最基本的要求,但是不能很好覆盖系统正常的使用情况
二八原则:满足绝大多数应用场景
- 并发tps = 总请求数 * 80% / 总时间 * 20%
- 满足系统绝大多数情况下的应用场景的需要
根据业务运营数据的统计计算(通常用来做稳定性测试)
- 并发TPS = 有效请求数 * 80% / 有效时间 * 20%
- 当运营数据统计越精确时,计算出的并发TPS与实际的越接近
根据用户峰值业务操作来计算(通常用来做压力测试)
- 并发TPS = (峰值请求数 / 峰值时间 )* 系数
- 满足峰值请求时间段内的负载量,系数取决于项目组对于未来业务量的评估
案例:
四、JMeter下载第三方插件
需要先下载JMeter插件管理工具包,再用此包下载JMeter插件
① 安装插件管理包
- 在Jmeter官网上(Install :: JMeter-Plugins.org)下载插件管理器Plugins-manager-1.10.jar
- 将JAR包放入到JMeter的lib\ext目录下
- 重启Jmeter,可以在选项下看到Plugins Manager选项
② 安装指定的插件
- 打开Plugins Manager插件管理器
- 选择Available Plugins,当前可用的插件
- 选择需要下载的插件(等待右方文本内容展示出来)
- 右下点击角的下载按钮,自动的完成下载,Jmeter会自动重启
五、性能监控
需安装以下指定插件:
1、Concurrency Thread Group 线程组
阶梯线程组:跟普通线程组很像,作用是阶梯加压;图形界面显示运行状态
添加方式:测试计划→线程(用户) →Concurrency Thread Group
参数:
2、性能测试常用图标
作用:
- 性能测试的结果统计,以聚合报告的结果为准
- 每秒性能指标的作用是:查看系统长时间运行过程中是否有异常出现,有则进一步分析
1️⃣Transactions per Second
每秒完成事务数:作用是统计各个事务每秒钟成功的事务个数
添加方式:测试计划→线程组→监听器→ Transactions per Second
2️⃣Bytes Throughput per Second
每秒字节吞吐量:作用是查看服务器吞吐流量(单位/字节)
添加方式:测试计划 →线程组 →监听器 →Bytes Throughput Over Time
3、PerfMon组件监控服务器硬件资源
作用:用来监控服务端的性能资源指标的工具,包括cpu、内存、磁盘、网络等性能数据
添加方法:线程组→监听器→jp@gc - PerfMon Metrics Collector
原理:
监控性能指标的步骤(windows服务器):
- 下载ServerAgent程序,链接地址:https://github.com/unpera/perfmon-agent
- 并上传到服务器上(是指程序所在的服务器,如果是本机运行,本机就是服务器),并解压ServerAgent-2.2.3.zip
- 手动启动ServerAgent程序,启动后,窗口放旁边不用管
- windows服务器就运行startAgent.bat
- linux服务器就运行startAgent.sh。
- 在Jmeter中添加PerfMon监控组件,并配置
- 添加线程组及HTTP请求脚本,并配置,运行即可监控资源指标
监控性能指标的步骤(linux服务器):
- 下载ServerAgent程序,并上传到服务器上
- 通过finalshell工具上传到指定的目录下(finalshell就是个远程控制工具,用其他的也可)
- 手动启动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监控组件,并配置
全部内容:
性能测试01|性能测试理论-CSDN博客
性能测试02|JMeter:安装、元件、线程组、HTTP请求、查看结果树、参数化-CSDN博客
性能测试03|JMeter:断言、关联、web脚本录制-CSDN博客
性能测试04|JMeter:连接数据库、逻辑控制器、定时器-CSDN博客
性能测试05|JMeter:分布式、报告、并发数计算、性能监控-CSDN博客
相关文章:

性能测试05|JMeter:分布式、报告、并发数计算、性能监控
目录 一、JMeter分布式 1、应用场景 2、原理 3、分布式相关注意事项 4、分布式配置与运行 二、JMeter报告 1、聚合报告 2、HTML报告 三、并发用户数(线程数)计算 四、JMeter下载第三方插件 五、性能监控 1、Concurrency Thread Group 线程组…...
关于Java面试题大全网站无法访问的解决方案
如果Java面试题大全网站无法访问,你仍然可以通过以下渠道获取高质量的Java面试题资源: 1. 国内网站 牛客网: 网址:https://www.nowcoder.com/特点:提供大量Java面试题和在线编程练习,适合刷题和模拟面试。推…...

CSS进阶和SASS
目录 一、CSS进阶 1.1、CSS变量 1.2、CSS属性值的计算过程 1.3、做杯咖啡 1.4、下划线动画 1.5、CSS中的混合模式(Blending) 二、SASS 2.1、Sass的颜色函数 2.2、Sass的扩展(extend)和占位符(%)、混合(Mixin) 2.3、Sass的数学函数 2.4、Sass的模块化开发 2.5、Sass…...

SwiftUI 撸码常见错误 2 例漫谈
概述 在 SwiftUI 日常撸码过程中,头发尚且还算茂盛的小码农们经常会犯这样那样的错误。虽然犯这些错的原因都很简单,但有时想要快速准确的定位它们却并不容易。 况且这些错误还可能在模拟器和 Xcode 预览(Preview)表现的行为不甚…...
JavaScript系列(9)-- Set数据结构专题
JavaScript Set数据结构专题 🎲 在前八篇文章中,我们探讨了JavaScript的语言特性、ECMAScript标准、引擎工作原理、数值类型、字符串处理、Symbol类型、Object高级特性和Array高级操作。今天,让我们深入了解JavaScript中的Set数据结构。Set是…...

开发培训-慧集通(iPaaS)集成平台脚本开发Groovy基础培训视频
Groovy是一种基于Java虚拟机(JVM)的敏捷开发语言,结合了Python、Ruby和Smalltalk的许多强大特性。它旨在提高开发者的生产力,通过简洁、熟悉且易于学习的语法,Groovy能够与Java代码无缝集成,并提供强大…...

【软考网工笔记】计算机基础理论与安全——网络规划与设计
HFC 混合光纤同轴电缆网 HFC: Hybrid Fiber - Coaxial 的缩写,即混合光纤同轴电缆网。是一种经济实用的综合数字服务宽带网接入技术。 HFC 通常由光纤干线、同轴电缆支线和用户配线网络三部分组成,从有线电视台出来的节目信号先变成光信号在干线上传输…...

【设计模式】 基本原则、设计模式分类
设计模式 设计模式是软件工程中的一种通用术语,指的是针对特定问题的经过实践验证的解决方案。设计模式并不是最终的代码实现,而是描述了如何解决某一类问题的思路和方法。 如果熟悉了设计模式,当遇到类似的场景,我们可以快速地…...

mac m2 安装 docker
文章目录 安装1.下载安装包2.在downloads中打开3.在启动台打开打开终端验证 修改国内镜像地址小结 安装 1.下载安装包 到官网下载适配的安装包:https://www.docker.com/products/docker-desktop/ 2.在downloads中打开 拖过去 3.在启动台打开 选择推荐设置 …...
Vue3-pinia的具体使用和刷新页面状态保持解决方案
在 Vue 3 中,Pinia 是一个官方推荐的状态管理库,它替代了 Vuex(Vuex在Vue3中依然可以正常使用),提供了更加简洁和现代的 API,同时能够与 Vue 3完美配合。在本回答中,我们将详细介绍 Pinia 的使用…...

用ResNet50+Qwen2-VL-2B-Instruct+LoRA模仿Diffusion-VLA的论文思路,在3090显卡上训练和测试成功
想一步步的实现Diffusion VLA论文的思路,不过论文的图像的输入用DINOv2进行特征提取的,我先把这个部分换成ResNet50。 老铁们,直接上代码: from PIL import Image import torch import torchvision.models as models from torch…...
创建.net core 8.0项目时,有个启用原生AOT发布是什么意思
启用原生 AOT 发布(Native AOT publishing) 是指在 .NET 6 及更高版本中使用 Ahead-of-Time (AOT) 编译 技术,将应用程序提前编译为本地机器代码,从而生成更高效、更快速启动的可执行文件。 1. AOT 编译是什么? AOT …...

2.1.7-1 io_uring的使用
一、背景 (1)下面几个有关异步操作的例子: a)客户端和服务端的异步关系,就是客户端发送请求后不需要等待结果,接下来发送其他请求。 b)对于服务端,客户端来请求后,服务…...

群论学习笔记
什么是对称? 对称是一个保持对象结构不变的变换,对称是一个过程,而不是一个具体的事物,伽罗瓦的对称是对方程根的置换,而一个置换就是对一系列事物的重排方式,严格的说,它也并不是这个重排本身…...
深入解析-正则表达式
学习正则,我们到底要学什么? 正则表达式(RegEx)是一种强大的文本匹配工具,广泛应用于数据验证、文本搜索、替换和解析等领域。学习正则表达式,我们不仅要掌握其语法规则,还需要学会如何高效地利…...

yolov5核查数据标注漏报和误报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、误报二、漏报三、源码总结 前言 本文主要用于记录数据标注和模型预测之间的漏报和误报思想及其源码 提示:以下是本篇文章正文内容,…...

日志聚类算法 Drain 的实践与改良
在现实场景中,业务程序输出的日志往往规模庞大并且类型纷繁复杂。我们在查询和查看这些日志时,平铺的日志列表会让我们目不暇接,难以快速聚焦找到重要的日志条目。 在观测云中,我们在日志页面提供了聚类分析功能,可以…...

如何让用户在网页中填写PDF表格?
在网页中让用户直接填写PDF表格,可以大大简化填写、打印、扫描和提交表单的流程。通过使用复选框、按钮和列表等交互元素,PDF表格不仅让填写过程更高效,还能方便地在电脑或移动设备上访问和提交数据。 以下是在浏览器中显示可填写PDF表单的四…...

GXUOJ-算法-补题:22级《算法设计与分析》第一次课堂练习
2.最大子数组和 问题描述 代码解答 #include<bits/stdc.h> using namespace std; const int N1005; int sum,n,a[N]; int res-1;int result(){for(int i0;i<n;i){if(sum<0) suma[i];else{suma[i];resmax(res,sum);}}return res; } int main(){cin>>n;for(i…...
源代码编译安装X11及相关库、vim,配置vim(3)
一、vim插件安装 首先安装插件管理器Vundle ()。参照官网流程即可。vim的插件管理器有多个,只用Vundle就够了。然后~/.vimrc里写上要安装的插件: filetype offset rtp~/.vim/bundle/Vundle.vim call vundle#begin() Plugin VundleVim/Vundle.vim Plugin powerline…...
构建高效可靠的电商 API:设计原则与实践指南
引言 在数字化浪潮中,电商 API 接口技术已成为连接不同系统、实现数据高效流通的核心桥梁。通过标准化的协议和工具集合,API 不仅支撑了商品管理、订单处理等基础功能,还为个性化推荐、全球供应链协同等创新场景提供了底层支持。本文将结合行…...
C#抽象类深度解析 _ 核心特性与实战指南
—— 面向对象设计的基石 🔍抽象类核心定义 abstract class AbClass { ... } // abstract修饰符声明 不可实例化:new AbClass() 将触发编译错误继承专用:仅能作为其他类的基类存在混合成员组合:可同时包含抽象方法和已实现方法…...

服务器安装软件失败或缺依赖怎么办?
服务器在安装软件时失败或提示缺少依赖,是运维中非常常见的问题。这个问题大多发生在 Linux 云服务器环境,原因和解决方法也有共性。以下是详细说明和解决建议: 🧠 一、常见原因分析 问题类型描述🔌 软件源不可用服务器…...

【信创-k8s】海光/兆芯+银河麒麟V10离线部署k8s1.31.8+kubesphere4.1.3
❝ KubeSphere V4已经开源半年多,而且v4.1.3也已经出来了,修复了众多bug。介于V4优秀的LuBan架构,核心组件非常少,资源占用也显著降低,同时带来众多功能和便利性。我们决定与时俱进,使用1.30版本的Kubernet…...

力提示(force prompting)的新方法
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
React状态管理Context API + useReducer
在 React 中,Context API useReducer 是一种轻量级的状态管理方案,适合中小型应用或需要跨组件共享复杂状态的场景。它避免了 Redux 的繁琐配置,同时提供了清晰的状态更新逻辑。 1. 基本使用步骤 (1) 定义 Reducer 类似于 Redux 的 reduce…...

时代星光推出战狼W60智能运载无人机,主要性能超市场同类产品一倍!
在刚刚结束的第九届世界无人机大会上,时代星光科技发布了其全新产品战狼W60智能运载无人机,并展示了基于战狼W60无人机平台的多种应用场景解决方案。据了解,该产品作为一款多旋翼无人机,主要性能参数均远超市场同类产品࿰…...
互联网大厂Java面试:从Spring Cloud到Kafka的技术考察
场景:互联网大厂Java求职者面试 面试官与谢飞机的对话 面试官:我们先从基础开始,谢飞机,你能简单介绍一下Java SE和Java EE的区别吗? 谢飞机:哦,这个简单。Java SE是标准版,适合桌…...
大模型RNN
RNN(循环神经网络)是一种专门处理序列数据的神经网络架构,在自然语言处理(NLP)、语音识别、时间序列分析等领域有广泛应用。其核心作用是捕捉序列中的时序依赖关系,即当前输出不仅取决于当前输入࿰…...

iOS上传应用包错误问题 “Invalid bundle. The “UIInterfaceOrientationPortrait”“
引言 在开发 iOS 应用的整个生命周期中,打包上传到 App Store 是一个至关重要的步骤。每一次提交,Xcode 都会在后台执行一系列严格的校验流程,包括对 Info.plist 配置的检查、架构兼容性的验证、资源完整性的审查等。如果某些关键项配置不当…...