如何进行JMeter分布式压测?一个案例教你详细解读!

引言

当前快速发展的互联网应用领域,高效的性能测试已经成为了确保在线应用质量和用户满意度的重要手段之一。

而JMeter分布式压测则是实现这一目标的最佳选择。然而,很多人并不知道如何使用JMeter进行分布式压测,更不知道如何获取准确的测试结果。

这篇文章将会向你介绍JMeter分布式压测的基本概念、工具和操作步骤,帮助你更加轻松地进行高效的性能测试。还等什么?赶紧跟着我们的案例来学习吧!

一、什么是压力测试?

压力测试(Stress Test),也称为强度测试、负载测试,属于性能测试的范畴。
压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行被测软件系统,来测试被测系统的性能、可靠性、稳定性等。一定负载的情况下,长时间运行被测软件系统,称为稳定性测试;超大负荷地运行被测软件系统称为极限压力测试。

二、什么是分布式测试?

分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。

三、为什么要使用分布式压力测试?

普通压力测试一般是采用单台机器对目标服务器产生的压力,因为受限于CPU、内存、网络、IO等因素的影响,通常只能模拟几十到几百用户的并发访问。分布式压测是利用多台机器同时向目标服务器产生压力,可以模拟几万到上亿级别用户的并发访问。

四、主流压力测试工具对比

(1)Webbench:开源,由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL。部署简单,静、动态均可测试。适用于小型网站压力测试(单例最多可模拟3万并发)。
(2)Apache bench: 开源, Apache自带的压力测试工具,主要用于测试网站每秒钟处理请求个数。多见用于静态压力测试,功能较弱,非专业压力测试工具。
(3)Tcpcopy: 开源 ,基于底层应用请求复制,可转发各种在线请求到测试服务器,具有分布式压力测试功能,所测试数据与实际生产数据较为接近。主要用于中大型压力测试,所有基于 tcp的packets均可测试。
(4)Loadrunner :付费/破解版本, 压力测试界的泰斗,可以创建虚拟用户,可以模拟用户真实访问流程从而录制成脚本,其测试结果也最为逼真。模拟最为逼真,并可进行独立的单元测试,但是部署配置较为复杂,需要专业人员才可以。
(5)JMeter: 开源免费, Jmeter 是一款使用Java开发的,开源免费的测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试).,而且用Jmeter 来测试 Restful API,非常好用。
(6)WeTest :付费, 腾讯出品的线上服务器压力工具, 最高可模拟亿级并发,可实时查看性能数据报表,提供专家级性能优化建议。我们通常要分析的性能数据,如TPS,在线用户数,事务数,网络带宽,吞吐量,CPU,内存,磁盘IO等,报告里都有。
(7)PTS:付费, 阿里云出品的PTS(Performance Testing Service)是面向所有技术相关背景人员的云化性能测试工具,有别于传统工具的繁复,PTS以互联网化的交互,面向分布式和云化的设计,更适合当前的主流技术架构。无论是自研还是适配开源的功能,PTS都可以轻松模拟大量用户访问业务的场景,任务随时发起,免去搭建和维护成本。更是紧密结合监控类产品提供一站式监控、定位等附加价值,高效检验和管理业务性能。

五、Jmeter分布式压测原理

(1)先了解几个专业术语
控制器节点(Controller Node),又叫Master:运行 JMeter GUI 的系统,它控制测试。
工作节点(Worker Nodes),又叫Slave:运行jmeter-server的系统,它从 GUI 接收命令并将请求发送到目标系统。
目标(Target):计划进行测试的网络服务器。

(2)原理:控制器节点启动时将压测脚本分发到各个工作节点上,然后通过远程启动各个工作节点,共同向目标服务器发送请求(产生压力)。测试结束以后,各个工作节点主动将压测数据回传给控制器节点,由控制器节点统一汇总数据,并输出测试报告。

注意两点:

(1)master和各个slave机器必须使用同一局域网,尽可能减少网络带宽的影响。

(2)使用非GUI模式,避免不必要的cpu、内存损耗。

六、Jmeter分布式压测前的准备工作

(1)确保master和各个slave上使用相同版本的JMeter 和 Java。混合版本将无法正常工作。

(2)master和各个slave的防火墙已关闭或打开了正确的端口,且端口未被占用。

(3)master和各个slave上安装的杀毒软件已关闭。

(4)master和各个slave在同一个子网内,尽量减少网络带宽的影响,减少时延问题。如果是多网卡环境需要保证启动的网卡都在同一个网段。

(5)确保 JMeter 可以访问服务器,可以使用ping命令查看。

(6)已经为 RMI 设置了 SSL或禁用了它。

(7)master和各个slave上安装Jmeter全部启动成功。

(8)如果压测脚本有依赖的测试数据,测试数据文件需要复制一份到Worker Nodes上,且文件路径必须Controller Node中一致。

(9)如果使用云服务器进行压测,一定要使用内网IP,不能使用公网IP,先使用ping命令检查网络是否通畅。

(10)压力测试瓶颈大都在带宽上面,需要保证slave的带宽要比Target的带宽高,不然压力上不去。

 

七、阿里云服务器上进行分布式压测

1、使用SpringBoot接口打包,并用jar包方式部署

(1)打包

(2)启动jar包

2、阿里云linux服务器下安装启动jdk8并配置环境变量

 

3、部署Java项目到阿里元服务器,守护进程讲解

守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不受用户登录注销的影响,它们一直在运行着。 

4、阿里云liunx服务器上安装Jmeter

下载:wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.1.tgz

解压:tar -zxvf apache-jmeter-5.1.tgz

拓展:

 

5、Jmeter非GUI界面参数讲解

FileZilla是一个免费开源的适合Windows、Mac和Linux的FTP客户端软件。FileZilla特点是:免费、跨平台、易用、下载速度非常快、功能齐全。

 

6、项目实战之阿里云linux服务器下非GUI界面执行Jmeter压测脚本

(1)Jmeter可视化界面开发压测脚本

(2)导出压测脚本linux_users_api.jmx保存在本地

(3)使用FileZilla工具将本地脚本上传到阿里云服务器上Jmeter安装路径的bin目录下

(4)执行压测脚本,查看日志:

7、Jmeter压测实战之jtl文件(压测结果文件)生成和查看

(1)使用FileZilla工具将阿里云服务器上的result.jtl文件下载到本地(直接拖拽到本地桌面)

(2)在本地打开Jmeter工具,Thread Group—>Add Listener—>Summary Report

(3)点击【Browse】,选择下载到本地桌面的result.jtl文件,打开。

8、Jmeter压测接口的性能优化

官网文档说明如下:

 

翻译下就是:

(1)使用非GUI模式:jmeter -n -t test.jmx -l test.jtl

(2)尽可能少低使用监听器,如果在监听器之前使用-l 标志,可以删除或禁用它们。

(3)在负载测试期间不要使用“查看结果树”或“聚合报告”监听器,仅在脚本编写阶段使用它们来调试脚本。

(4)不要使用大量类似的取样器,而是在循环中使用相同的取样器,并使用变量(CSV数据集)来改变样本。[此处包含控制器没有帮助,因为它将文件中的所有测试元素添加到测试计划中。

(5)不要使用功能模式。

(6)使用CSV输出而不是XML。

(7)只保存您需要的数据。

(8)使用尽可能少的断言。

(9)使用性能最好的脚本语言(请参阅JSR223部分)

(10)如果您的测试需要大量数据(特别是需要随机数据),请在可以使用CSV数据集读取的文件中创建测试数据。这避免了在运行时浪费资源。

9、Jmeter压测生成多维度图形化压测报告

(1)进度到bin目录下,执行上述指令,路径按自己实际情况来。

(2)将result目录打包成,result.tar.gz

(3)使用FileZilla工具下载本地解压

(4)找到index.html文件后,拖拽到浏览器中打开。

10、Jmeter图形化压测报告dashboard讲解

11、Jmeter图形化压测报告Charts讲解

 

12、阿里云Jmeter分布式压测常见问题处理

13、阿里云Jmeter分布式压实战

八、系统架构学习

 

 感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端工程化面试题 | 15.精选前端工程化高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

物奇ENC算法开关接口修改方法

物奇ENC算法开关接口修改 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 1 配置工具事件接口 2 代…

LeetCode 热题 100 | 二叉树(四)

目录 1 114. 二叉树展开为链表 2 105. 从前序与中序遍历序列构造二叉树 3 437. 路径总和 III 菜鸟做题(即将返校版),语言是 C 1 114. 二叉树展开为链表 题眼:展开后的单链表应该与二叉树 先序遍历 顺序相同。 而先序遍历就…

【编译原理】用Python实现LR(0)语法分析

实验内容 对于给定的如下文法,编写调试一个上下文无关文法的LR(0)分析程序。 文法G’为: S → E S\to E S→E E → a A E\to aA E→aA E → b B E \to bB E→bB A → c A A\to cA A→cA A → d A\to d A→d B → c B B\to cB B→cB B → d B\to …

网购商城系统源码 积分兑换商城系统源码 独立后台附教程

应用介绍 本文来自:网购商城系统源码 积分兑换商城系统源码 独立后台附教程 - 源码1688 简介: 网购商城系统源码 积分兑换商城系统源码 独立后台附教程 测试环境:NginxPHP7.0MySQL5.6thinkphp伪静态 图片:

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程 一、前言 以下软件以 佳易王茶社计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、计时计费&…

JavaWeb——007MYSQL(DQL多表设计)

# 数据库开发-MySQL 一级目录二级目录三级目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案…

遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)

我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…

vue或webpack加载highcharts与highcharts-3d

highcharts与highcharts-3d下载 https://jshare.com.cn/demos/hhhhiG 点击对应的文件可打开,复制代码到(创建一个同名文件)里面;放到项目对应目录下 引入 两种引入 highcharts.js 方法皆可用;注意 highcharts-3d 引入…

超全整理,自动化测试-YAML 配置文件深入解析(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、YAML详情 YAM…

Dear ImGui的UE5.3集成实践

Dear ImGui一直较为火热,这是一个调试使用并且可以响应快速迭代的Gui库,甚至可以做到在任何代码块中调用API即显示。如果你想更多的了解一下可访问其官方网站:https://www.dearimgui.org/ 那么本文就来在UE5中尝试踩坑使用它。 UE4.26版本 …

[引擎开发] 深入C++模板编程

[本文大纲] 引言 模板实例化 隐式实例化 显式实例化 模板具体化 显式具体化 部分具体化 函数重载和具体化 类型推断 隐式类型转换 支持的类型转换 引用和const 通用引用、引用折叠和完美转发 …

RDMA内核态函数ib_post_recv()源码分析

接上文,上文分析了内核rdma向发送队列添加发送请求的函数ib_post_send,本文分析一下向接收队列添加接收请求的函数ib_post_recv。其实函数调用流程与上文类似,不再重复说明,可参考链接。 函数调用过程 最终会调用到这个函数 下面…

浅谈数据分析工具在智慧城市中的作用

随着城市化、技术进步和人口不断增长,智慧城市已成为当今世界主要技术发展之一。 智慧城市设备依靠描述模型对城市环境产生的大量数据进行数据分析。 在这种城市景观中,智慧城市是技术和可持续的城市地区,利用信息和通信技术(ICT)来改善城市…

C语言每日一题(61)盛最多水的容器

题目链接 力扣 11 盛最多水的容器 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水…

【服务发现--ingress】

1、ingress介绍 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。 Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟…

K线实战分析系列之十一:行情力量不足——平头形态

K线实战分析系列之十一:行情力量不足——平头形态 一、平头形态二、不同形态与平头形态的叠加三、总结平头形态 一、平头形态 前一根K线具有较长的实体,后一根K线的实体比较小,无论是多头还是空头的力量到第二根K线都被瓦解了多头上攻&#…

【数据结构与算法】(21)高级数据结构与算法设计之 Dynamic-Programming 动态规划算法 代码示例与详细讲解

目录 4.3 Dynamic-Programming1) Fibonacci降维 2) 最短路径 - Bellman-Ford3) 不同路径-Leetcode 62降维 4) 0-1 背包问题降维 5) 完全背包问题降维 6) 零钱兑换问题-Leetcode322降维零钱兑换 II-Leetcode 518 7) 钢条切割问题降维类似题目 Leetcode-343 整数拆分 8) 最长公共…

python 基础知识点(蓝桥杯python科目个人复习计划51)

今日复习计划:做复习题 例题1:大石头的搬运工 问题描述: 在一款名为“大石头的搬运工”的游戏中,玩家需要 操作一排n堆石头,进行n - 1轮游戏。 每一轮,玩家可以选择一堆石头,并将其移动到任…

【生活】浅浅记录

各位小伙伴们好鸭,今天不是技术文章,浅浅记录一下最近几个月的收获😊 新的一年,一起努力,加油加油!