Jmeter 分布式性能测试避坑指南
在做后端服务器性能测试中,我们会经常听到'分布式'。那你,是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意?

为什么要使用分布式?
做性能测试时,如果被测系统性能比较好,或者系统项目比较大,那么一般都会要求能支持比较高的并发用户数。而我们做性能测试时,发起请求的机器,硬件资源是一定的,不可能配置无限大,所以,它能发起的并发用户数是有限的,而当我们发起方一台电脑能发起的并发用户数小于我们性能测试期望的并发用户数时,我们就会自然而然想到增加发起方的电脑。增加发起方电脑数量,那么,发起的并发用户数累加,就增大了。
发起方一台电脑,不管是windows系统还是linux系统,一般而言,大概能支持1.5k左右并发用户,更多并发用户就要采用分布式。
那么,接下来的问题就是如何配置分布式?
如何配置分布式?
- 助攻机配置,修改jmeter.properties文件 首先,我们准备多台机器,作为助攻机器; 然后,检查每台机器上是否安装了jdk,并且jdk版本是否都一致; 然后,在助攻机器上放置相同版本的jmeter; 接下来,配置jmeter.properties文件, 修改server_port端口,自定义一个端口 修改server.rmi.ssl.disable=true 修改 server.rmi.port 端口 ---- 可选 启动服务:jmeter-server -Djava.rmi.server.hostname=ip_address 检查防火墙,关闭或开放 自定义的server_port端口
- 主控机器配置,修改jmeter.properties文件 修改remote_hosts,值为助攻机器ip 修改,server.rmi.ssl.disable=true 修改, mode=Standard
分布式机器配置有哪些注意事项?
分布式的配置,是不是很简单呢?
是的,这个配置实际上一点都不难,如果你要自己练手,按照上面的操作,就能很简单配置成功。但是,当你在企业项目中实战时,还会这么简单吗?如果你企业的项目,需要支持大几万的并发,要使用几十台助攻机器,是不是就简单重复上面的操作就可以了呢?
答案是否定的。
现在有几十台linux机器,放在你面前,供你去配置为助攻机。数量比较大,完全无法保证每一台都一模一样,所以,我们先要检查机器配置。
- 1、硬件资源 cpu、内存是一台电脑的核心, 几十台机器,我们完全无法保证每一台都一样,在助攻机的要求中,虽然,没有对cpu和内存做要求,但是,如果每台机器能提供的资源不一样,那么能产生的并发用户数量肯定也会不相等,所以,我们需要找出有机器中,最低配置的机器,然后,以最低配置机器为参考配置jmeter的堆栈信息。 通过top命令,查看下每个系统的cpu和内存信息 修改jmeter的bin文件夹中jmeter文件HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" 修改堆栈信息中的大小。 不配置,在执行高并发用户数时,jmeter可能会出现OOM问题
- 2、系统环境 jdk 机器多了,每台机器的jdk大版本是否一致,可能就是个问题。如果,机器上没有安装,哪可以直接去安装指定版本即可,但是,如果助攻机器上已经安装了其他版本的jdk,并且正运行其他java项目,这个时候怎么办呢? 指定jmeter的运行jdk版本 1、下载解压指定jdk版本到linux的/usr/local 文件夹下, 不要去配置改动系统环境变量 2、在jmeter的jmeter文件中,添加JAVA_HOME=/usr/local/jdk版本/ 指定jmeter运行的jdk版本,这样,就不用改动操作系统的jdk,不影响系统中其他java项目 jmeter jmeter版本 所有助攻机器上jmeter的版本都必须一致。 jmeter.properties要修改ssl.disable=true, 端口可以不相同 如果代码中使用了第三方插件,助攻机器上,也必须有这些插件包 环境变量 jmeter运行,本身可以不配置JMETER_HOME环境变量,但是,当机器多了时,还是建议在所有机器上配置JMETER_HOME环境变量 HEAP配置 机器多了,可能每台机器的内存都不一样, 我们期望助攻机器能产生更大的并发用户数,所以,建议修改每台机器的HEAP配置信息,设置为相同 csv文件 如果写的jmeter脚本中,使用了csv数据文件设置,那么文件的路径,请使用相对路径写法。 jmeter-server助攻服务在哪个路径下启动,就要在所有的机器上,上传csv文件到该路径下的相对位置。 os操作系统 os版本: 没有要求,可以是不同版本 端口区间: 操作系统的端口数量是有限的,不同系统,默认情况下,打开的端口数量可能不相等,这就需要我们去配置一下每台机器上打开的端口范围。 sysctl -a | grep net.ipv4.ip_local_port_range 这个命令可以查看当前机器上,开启的端口范围 sysctl -w net.ipv4.ip_local_port_range="1024 65534" 然后再执行sysctl -p 生效。 这样,设置每台机器上,开启的端口范围。 打开文件数量 操作系统对每个程序能打开的文件数量是有限制的,这个是系统限制,我们可以通过ulimit -n 看到, 也可以通过cat /proc/进程id/limit 查看某个进程今天能打开的文件数量限制。 因为性能测试助攻机,也是要发起大量请求的,这有可能要打开大量的文件,如果文件数量限制过小,也会导致问题,所以,我们可以通过ulimit -n 数量 来修改进程可以打开的文件数量。然后,重启动jmeter-server助攻服务,这样,就会以你修改后的数量来做限制了。 时间 助攻机器多了,可能出现每台机器的时间不一样,我们可以通过date 查看每台机器的时间。 性能测试,期望是在同一时间能发起大量请求,如果,多台机器时间不一致,那么在同一时间,发起的请求数量可能就达不到预期要求,所以,我们需要同步设定每台机器的时间。date -s 时间 来设定系统时间。
- 3、网络环境 几十台机器,网络配置可能会不一样,如果这些助攻机器到被测服务器之间的网络存在问题,那么,可能就会导致请求压力上不会,甚至出现网络错误。 我们可以在每台助攻机器上,使用tracepath 被测服务器 来查看助攻机到被测服务器之间的网络情况。如果发现,网络延迟时间很长,哪就说明,当前机器,可能网络配置有问题。在使用时,可能就要剔除这台助攻机器。
- 4、启动服务 在每台助攻机器上执行:jmeter-server -Djava.rmi.server.hostname=ipaddr 因为每台的ip地址都不一样,所以,这个命令必须一个一个的敲。 同时,我们可以加个’&‘ 符号,把命令转换为后台运行。 在主控机器上执行:java -Xms48g -Xmx48g -XX:MaxMetaspaceSize=2g -jar $JMETER_HOME/bin/ApacheJMeter.jar -n -R xxx:port,xxx:port -t xxx.jmx -l xxxx.jtl -e -o xxdirect -Xms48g -Xmx48g -XX:MaxMetaspaceSize=2g 这个是设置主控机器jmeter的堆栈信息,这个大小,可以根据自己机器的内存大小灵活修改,但是,这个一定要设置的比较大。如果小了,生成报告的时间就会很长。 $JMETER_HOME/bin/ApacheJMeter.jar 为自己的jmeter路径 -R xxx:port,xxx:port 指定助攻机器。可以根据自己的需要指定。如果,不需要采用分布式,就不用这一段,如果要用分布式,就要使用这一段,多台时,就用逗号分隔。 -t xxx.jmx 你放在主控机器上的jmeter脚本文件
好了,这些注意事项,你都学会了吗?
相关文章:
Jmeter 分布式性能测试避坑指南
在做后端服务器性能测试中,我们会经常听到分布式。那你,是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意&a…...
基于SpringCloud的会议室预约系统Java基于微服务的会议室报修系统【源码+lw】
💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、微信小程序、Python、Android、大数据等,大家有这一块的问题可以一起交流! 💕💕…...
idea设置忽略大小写
1.点击file 2.点击settings 3.点击Editor选项 4.点击general选项 5.点击code completion 6.点击左上角match case...
re学习(35)攻防世界-no-strings-attached(动调)
参考文章:re学习笔记(28)攻防世界-re-no-strings-attached_Forgo7ten的博客-CSDN博客 攻防世界逆向入门题之no-strings-attached_攻防世界 no-strings-attached_沐一 林的博客-CSDN博客 本人题解: 扔入Exepeinfo中查壳和其他信息…...
STM32 F103C8T6学习笔记8:0.96寸单色OLED显示屏显示字符
使用STM32F103 C8T6 驱动0.96寸单色OLED显示屏: OLED显示屏的驱动,在设计开发中OLED显示屏十分常见,因此今日学习一下。一篇文章从程序到显示都讲通。 文章提供源码、原理解释、测试工程下载,测试效果图展示。 目录 OLED驱动原理—IIC通信…...
vscode的配置和使用
1.侧边栏调整大小 放大:View -> Appearance -> Zoom in(快捷键Ctrl ) 缩小:View -> Appearance -> Zoom out(快捷键Ctrl -) 侧边栏字体调整到合适大小后,可以按下一步调整代码区…...
SpringBoot统⼀功能处理
前言🍭 ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 本章是讲Spring Boot 统⼀功能处理模块,也是 AOP 的实战环节&…...
LeetCode 每日一题 2023/8/14-2023/8/20
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 8/14 617. 合并二叉树8/15 833. 字符串中的查找与替换8/16 2682. 找出转圈游戏输家8/17 1444. 切披萨的方案数8/18 1388. 3n 块披萨8/19 2235. 两整数相加8/20 8/14 617. 合…...
进入微服务阶段后的学习方法
微服务SpringCloud学习的特点 陌生,多,复杂。 技术陌生,技术栈多,实现复杂。 学习方式 对于每一个组件: 1.知道是什么、有什么用 2.知道操作步骤(跟着讲义操作即可),包括&#…...
C/C++中const关键字详解
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下:…...
【2023新教程】树莓派4B开机启动-树莓派第一次启动-树莓派不使用显示器启动-树莓派从购买到启动一步一步完全版!
背景 闲来无事,在咸鱼上买了一个树莓派4B。买来配件都十分齐全,于是就想着启动来测试一下。下面是树莓派无显示器第一次启动的全过程,包含安装系统。 网上的教程大多需要额外使用显示器、鼠标、键盘之类的外设。然而,树莓派本身就…...
LA@2@1@线性方程组和简单矩阵方程有解判定定理
文章目录 矩阵方程有解判定定理线性方程组有解判定特化:齐次线性方程组有解判定推广:矩阵方程 A X B AXB AXB有解判定证明推论 矩阵方程有解判定定理 线性方程组有解判定 线性方程组 A x b A\bold{x}\bold{b} Axb有解的充分必要条件是它的系数矩阵A和增广矩阵 ( A , b ) (A,…...
如何使用ChatGPT创作一个小说式的虚构的世界
世界构建也许是小说写作中最重要的一环,但也可能非常耗时。让ChatGPT加快这一过程吧。 写小说最棒的一点就是有机会从零开始创造一个新世界。你可以创造超凡脱俗的景观,赋予人物魔法。神话故事可以存在于你小说中的现实世界,而传统可以帮助你…...
用于量子通信和互联网的光量子芯片
近年来,新兴的光量子芯片在量子通信和量子互联网领域取得了重大进展。光量子芯片芯片具有可扩展、稳定和低成本等特点,为微型化应用开辟了新的可能性。 7月14日,一篇发表在《light: science & applications》的文章概述了用于量子通信的光…...
11. Vuepress2.x 关闭夜间模式
修改 docs/.vuepress/config.ts 配置文件 设置 themeConfig.darkMode属性详见 官网 module.exports {host: localhost, // ipport: 8099, //端口号title: 我的技术站, // 设置网站标题description: 描述:我的技术站,base: /, //默认路径head: [// 设置 favor.ico&a…...
netty实现websocket通信
调用注意: 1、端口一定要是可以访问的。 2、依赖必须注意和其他版本冲突,比如redis的springboot starter包,会与5.0版本冲突。 <netty.version>4.1.74.Final</netty.version> <dependency><groupId>io…...
两个list如何根据一个list中的属性去过滤掉另一个list中不包含这部分的属性,用流实现
你可以使用Java 8的流来实现这个功能。假设你有两个包含对象的List,每个对象有一个属性,你想根据一个List中的属性值来过滤掉另一个List中不包含这个属性值的对象。下面是一种使用流的方式来实现这个功能 import java.util.ArrayList; import java.util…...
Blender 混合现实3D模型制作指南【XR】
本教程分步展示如何: 减少 3D 模型的多边形数量,使其满足 Microsoft Dynamics 365 Guides 和使用 Microsoft Power Apps 创建的应用程序中包含的混合现实组件的特定性能目标的性能需求。将 3D 模型的多种材质(颜色)组合成可应用于…...
kubeasz在线安装K8S集群单master集群(kubeasz安装之二)
一、介绍 Kubeasz 是一个基于 Ansible 自动化工具,用于快速部署和管理 Kubernetes 集群的工具。它支持快速部署高可用的 Kubernetes 集群,支持容器化部署,可以方便地扩展集群规模,支持多租户,提供了强大的监控和日志分…...
『C语言』数据在内存中的存储规则
前言 小羊近期已经将C语言初阶学习内容与铁汁们分享完成,接下来小羊会继续追更C语言进阶相关知识,小伙伴们坐好板凳,拿起笔开始上课啦~ 一、数据类型的介绍 我们目前已经学了基本的内置类型: char //字符数据类型 short …...
有向无环图(DAG)在Multi-Agent系统中的应用(图编排、动态DAG、Dynamic DAG)动态Agent Graph
文章目录有向无环图(DAG)在 Multi-Agent 系统中的应用一、什么是 DAG(有向无环图)二、为什么 Multi-Agent 需要 DAG三、Multi-Agent 的本质:任务图四、DAG 在 Multi-Agent 中的核心作用五、一个典型 Multi-Agent DAG六…...
基于视觉语言模型的智能体框架:让AI看懂界面并自动操作
1. 项目概述:当AI学会“看”与“想”最近在探索AI与视觉结合的领域时,我深度体验了landing-ai团队开源的vision-agent项目。这不仅仅是一个工具库,它更像是一个为大型语言模型(LLM)装上了“眼睛”和“手”的智能体框架…...
告别串口线!用STM32CubeMX给STM32F103C8T6做个USB DFU Bootloader(Keil工程+完整代码)
STM32F103C8T6 USB DFU Bootloader实战:从实验室到产品的完整方案 在嵌入式产品开发中,固件升级是一个绕不开的话题。想象一下,当你的设备已经部署在现场,却发现需要修复一个关键bug或增加新功能时,传统的JTAG/SWD调试…...
别再只用高斯噪声了!手把手教你为DDPG算法注入‘惯性’:Ornstein-Uhlenbeck噪声的Python实现与调参实战
突破DDPG探索瓶颈:Ornstein-Uhlenbeck噪声的工程实践指南 在机器人控制或自动驾驶仿真这类连续动作空间的任务中,DDPG算法常因探索效率低下导致训练停滞。当智能体在MuJoCo环境中反复"原地踏步"时,问题往往不在于算法本身…...
FastAPI快速入门:环境搭建+第一个接口
FastAPI快速入门:环境搭建第一个接口文章信息 标题:FastAPI快速入门:环境搭建第一个接口字数:4200字预估阅读时间:18分钟难度:⭐☆☆☆☆一、为什么选择FastAPI? 在2026年的Python Web框架生态中…...
赛车电气系统设计的现代化转型与实践
1. 赛车电气系统设计的现状与挑战当人们谈论赛车技术时,脑海中浮现的往往是碳纤维车身、空气动力学套件或是大马力发动机。但在这光鲜亮丽的表象背后,电气系统才是现代赛车的"神经系统"。有趣的是,这个关键领域的设计方法却呈现出两…...
UPS Ground运输时间估算:从纽约10013到全美各区域的实操指南
1. 物流时间估算的核心价值与挑战在电商和供应链的世界里,时间就是金钱,而运输时间则是连接承诺与现实的桥梁。无论是作为卖家管理客户预期,还是作为买家规划项目进度,一个相对准确的运输时间预估都至关重要。UPS Ground作为美国境…...
基于Codebender在线IDE快速开发Adafruit FLORA可穿戴硬件项目
1. 项目概述:为什么选择在线IDE来玩转可穿戴硬件?如果你和我一样,是个喜欢鼓捣硬件的创客,那么对Arduino、树莓派这类开发板一定不陌生。每次开始一个新项目,最头疼的往往不是写代码,而是配环境:…...
从开发板到自研板:RK3568设备树移植与定制编译实战
1. RK3568设备树移植入门指南 第一次接触RK3568设备树移植的工程师,往往会被dts文件中密密麻麻的节点和属性搞得晕头转向。我刚开始做这块的时候,光是看那7000多行的代码就头疼。但其实只要掌握几个关键点,移植工作就会变得清晰很多。 设备树…...
msphpsql与现代化PHP框架集成指南:Laravel、Symfony等主流框架的完整配置方案
msphpsql与现代化PHP框架集成指南:Laravel、Symfony等主流框架的完整配置方案 【免费下载链接】msphpsql Microsoft Drivers for PHP for SQL Server 项目地址: https://gitcode.com/gh_mirrors/ms/msphpsql Microsoft Drivers for PHP for SQL Server&#…...
