Jmeter分布式性能测试,80%资深测试都会遇到这个坑!

JMeter从零安装到第一个性能测试脚本:避坑指南与实战 性能测试是软件质量保障的关键环节,旨在评估系统在特定负载下的响应能力、稳定性和资源消耗。其核心原理是通过模拟多用户并发操作,对系统施加压力,从而发现潜在的性能瓶颈。掌握性能测试技术,对于保障线上系统在高并发场景下的稳定运行、提升用户体验具有重要价值,广泛应用于电商大促、秒杀活动、API接口压测等场景。本文聚焦于行业标准的开源性能测试工具Apache JMeter,详细解析其安装配置、环境依赖及常见问题排查,并融入**Java环境配置**与**聚合报告分析**等关键实践要点,帮助开发者快速搭建可靠的性能测试工 阅读详情

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

01.为什么要使用分布式


 

做性能测试时,如果被测系统性能比较好,或者系统项目比较大,那么一般都会要求能支持比较高的并发用户数。而我们做性能测试时,发起请求的机器,硬件资源是一定的,不可能配置无限大。

所以,它能发起的并发用户数是有限的,而当我们发起方一台电脑能发起的并发用户数小于我们性能测试期望的并发用户数时,我们就会自然而然想到增加发起方的电脑。增加发起方电脑数量,那么,发起的并发用户数累加,就增大了。

发起方一台电脑,不管是 windows 系统还是 Linux 系统,一般而言,大概能支持 1.5k 左右并发用户,更多并发用户就要采用分布式。

那么,接下来的问题就是如何配置分布式?

02.如何配置分布式

助攻机配置,修改 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

03.分布式机配置有哪些注意事项
 

分布式的配置,是不是很简单呢?

是的,这个配置实际上一点都不难,如果你要自己练手,按照上面的操作,就能很简单配置成功。但是,当你在企业项目中实战时,还会这么简单吗?如果你企业的项目,需要支持大几万的并发,要使用几十台助攻机器,是不是就简单重复上面的操作就可以了呢?

答案是否定的。

现在有几十台 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 版本

  • 下载解压指定 JDK 版本到 Linux 的 /usr/local 文件夹下, 不要去配置改动系统环境变量

  • 在 jmeter 的 jmeter 文件中,添加 JAVA_HOME=/usr/local/jdk版本/ 指定 jmeter 运行的 JDK 版本,这样,就不用改动操作系统的 JDK,不影响系统中其他 Java 项目

jmeter

  • jmeter 版本

    1. 所有助攻机器上 jmeter 的版本都必须一致。

    2. jmeter.properties 要修改 ssl.disable=true, 端口可以不相同

    3. 如果代码中使用了第三方插件,助攻机器上,也必须有这些插件包

  • 环境变量

    1. jmeter 运行,本身可以不配置 JMETER_HOME 环境变量,但是,当机器多了时,还是建议在所有机器上配置 JMETER_HOME 环境变量

  • HEAP 配置

    1. 机器多了,可能每台机器的内存都不一样, 我们期望助攻机器能产生更大的并发用户数,所以,建议修改每台机器的 HEAP 配置信息,设置为相同

  • CSV 文件

    1. 如果写的 jmeter 脚本中,使用了 CSV 数据文件设置,那么文件的路径,请使用相对路径写法。

    2. 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 生效。这样,设置每台机器上,开启的端口范围

  • sysctl -a | grep net.ipv4.ip_local_port_range

这个命令可以查看当前机器上,开启的端口范围

  • 打开文件数量

  • 操作系统对每个程序能打开的文件数量是有限制的,这个是系统限制,我们可以通过 ulimit -n 看到, 也可以通过 cat /proc/进程id/limit 查看某个进程今天能打开的文件数量限制。

  • 因为性能测试助攻机,也是要发起大量请求的,这有可能要打开大量的文件,如果文件数量限制过小,也会导致问题,所以,我们可以通过 ulimit -n 数量 来修改进程可以打开的文件数量。然后,重启动 jmeter-server 助攻服务,这样,就会以你修改后的数量来做限制了。

  • 时间

  • 助攻机器多了,可能出现每台机器的时间不一样,我们可以通过 date 查看每台机器的时间。

  • 性能测试,期望是在同一时间能发起大量请求,如果,多台机器时间不一致,那么在同一时间,发起的请求数量可能就达不到预期要求,所以,我们需要同步设定每台机器的时间。date -s 时间 来设定系统时间。


 

网络环境

  • 几十台机器,网络配置可能会不一样,如果这些助攻机器到被测服务器之间的网络存在问题,那么,可能就会导致请求压力上不会,甚至出现网络错误。

  • 我们可以在每台助攻机器上,使用 tracepath 被测服务器 来查看助攻机到被测服务器之间的网络情况。如果发现,网络延迟时间很长,哪就说明,当前机器,可能网络配置有问题。在使用时,可能就要剔除这台助攻机器。

启动服务

  • 在每台助攻机器上执行: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性能测试:那些高频面试题背后的实战逻辑与避坑指南 本文从面试官视角深入解析JMeter性能测试的高频面试题,揭示问题背后的实战逻辑与考察要点。涵盖JMeter优势分析、性能测试类型、TPS/QPS指标解读、并发用户数确定方法等核心内容,提供系统化的性能测试思维框架和避坑指南,帮助候选人提升面试表现。 阅读详情

相关推荐

JMeter性能测试进阶:从脚本执行到工程化实践

性能测试是软件工程中评估系统在高负载下表现的关键环节,其核心在于模拟真实用户行为,对系统进行压力、负载、稳定性等多维度验证。JMeter作为主流的开源性能测试工具,通过多线程架构模拟并发请求,结合丰富的元件模型(如线程组、取样器、监听器)实现复杂场景的构建。其技术价值在于将性能测试从简单的脚本执行提升为可重复、可监控、可分析的工程化实践,帮助团队发现系统瓶颈、评估容量和指导优化。在实际应用中,JMeter常用于Web服务、API接口及数据库的性能验证,尤其适用于需要模拟阶梯增压、混合业务场景的测试需求。本文

weixin_26804345的博客 259

Jmeter分布式性能测试,80%资深测试都会遇到这个坑

-R xxx:port,xxx:port 指定助攻机器。可以根据自己的需要指定。如果,不需要采用分布式,就不用这一段,如果要用分布式,就要使用这一段,多台时,就用逗号分隔。

kk_lzvvkpj的博客 760

资深测试老鸟,性能测试-确定TPS和并发数+计算方法...

1、性能测试中如何确定TPS和并发数性能测试中,最难的就是需求不明,无法获取到有效的需求指标,造成测试工作无法推进。所以,我给大家一个预估TPS和并发数的公式。1)计算平均的并发用户数:C=nL/T公式1中:c是平均的并发用户数;n是loginsession的数量;L是loginsession的平均使用时长;T是考察的时间段长度。2)并发用户数峰值:C’≈C+3根号C公式2中:C’指并发用户数的峰值,C就是平均的并发用户数。

m0_70102063的博客 1271

快速入门Jmeter5.X 性能测试小白到高手这一篇就够了

简介: HTTP 的九种请求方法和响应码介绍浏览器请求方法http1.0 定义了三种:GET: 向服务器获取资源,比如常见的查询请求POST: 向服务器提交数据而发送的请求Head: 和 get 类似,返回的响应中没有具体的内容,用于获取报头http1.1 定义了六种PUT:一般是用于更新请求,比如更新个人信息、商品信息全量更新PATCH:PUT 方法的补充, 更新指定资源的部分数据DELETE:用于删除指定的资源。

二当家小D的学习资源库 1500

macOS系统下JMeter性能测试工具完整部署与实战指南

性能测试是软件开发与运维中评估系统承载能力、发现性能瓶颈的关键环节,其核心原理是通过模拟多用户并发请求,测量系统的响应时间、吞吐量及稳定性等指标。在持续集成与自动化测试实践中,性能测试工具的价值尤为突出,它能帮助团队在开发早期识别性能问题,优化系统架构。Apache JMeter作为一款开源的纯Java应用程序,凭借其多协议支持、可扩展的插件生态和强大的结果分析能力,成为实施性能压测和负载测试的流行选择。对于在macOS这一主流开发者平台上工作的工程师而言,掌握JMeter的部署、环境配置与调优,能够高效地

cuililai5127的博客 357

【python3.7】解决报错 error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++

解决pip安装py7zr遇到的报错问题。

水w的博客 3938

资深测试老鸟,性能测试从零到实战上手总结,看这一篇就够了...

1、什么是性能测试性能测试是指通过自动化的测试工具(例如:Jmeter、LoadRunner、Locust 等)模拟多种正常值、峰值以及异常负载条件来对系统的各项性能指标(例如:响应时间、吞吐量、并发量、资源利用率、错误率等)进行测试。功能测试关注的是 1 个人的操作(也就是关注该功能是否能够实现),性能测试关注的是多个人的操作(性能测试的前提是功能没有问题)。2、性能测试指标。

大佬云集技术答疑交流群:743262921(进群暗号:222) 1131

K-means算法代码实现(python)

K-means算法代码实现以及解决质心选择问题 计算距离 距离通常使用欧几里得距离来衡量 def euclDistance(vector1, vector2): return np.sqrt(sum((vector2 - vector1) ** 2)) 初始化质心 def initCentroids(data, k): numSamples, dim = data.shape ...

江南小帅瓜的博客 1万+

资深老鸟,性能测试高频面试题+回答(详情)

1、性能测试的应用领域有哪些?能力验证:通过实际的测试结果证明自己系统的预期能力瓶颈分析:通过一系列的测试手段发现系统存在的性能瓶颈(并发,负载,压力,失效恢复)性能调优:通过一系列的技术手段优化系统性能,包括响应时间,吞吐量,资源利用率容量规划:为了符合未来的规划预期(用户数,市场占有率),对资源做相应的调整。2、交付一个性能测试项目,请阐述你的性能测试流程1)分析需求2)制定测试计划和方案(人力资源,时间资源,测试机器资源)3)设计性能测试场景和用例(并发,负载,压力,稳定性测试)

大佬云集技术答疑交流群:743262921(进群暗号:222) 838

医学图像分割实战:基于TransUNet训练自己的眼底硬渗出物数据集(附完整代码)

本文详细介绍了基于TransUNet的眼底硬渗出物分割实战指南,涵盖数据预处理、模型调优、训练策略及性能优化等关键环节。通过代码复现和实验对比,展示了TransUNet在医学图像分割中的优势,为糖尿病视网膜病变的早期诊断提供技术支持。

weixin_42524708的博客 361

OnlyOffice Docker部署踩坑实录:解决Nginx反向代理导致的editor.bin下载失败

本文详细解析了在Docker中部署OnlyOffice时,因Nginx反向代理配置不当导致editor.bin下载失败的常见问题。通过分析问题根源,提供了从Nginx代理配置、Docker网络设置到OnlyOffice容器内部调整的完整解决方案,并分享了实战调试技巧与性能优化建议,帮助用户彻底解决这一部署难题。

wine的专栏 523

性能测试实战:从JMeter脚本到瓶颈定位的完整指南

性能测试是软件质量保障的核心环节,它通过模拟真实用户负载来评估系统在压力下的表现。其基本原理是使用工具模拟多用户并发操作,监控系统的响应时间、吞吐量、资源利用率等关键指标,从而发现潜在的性能瓶颈。这项技术的核心价值在于,它能在真实用户遇到问题前,提前识别系统的承载极限和稳定性风险,为容量规划和架构优化提供数据支撑。在应用场景上,性能测试广泛应用于Web服务、API接口、数据库系统等各类在线业务系统,特别是在电商、金融等高并发领域。本文将以JMeter工具为例,结合电商商品详情页的实战案例,深入解析如何设计有

weixin_28826545的博客 364

Codex Skill:AI编程助手的专项能力扩展与实战指南

在AI编程助手领域,Skill(技能)是一种标准化的能力扩展机制,它通过封装特定任务所需的指令、资源和脚本,解决AI模型在专项任务上的能力局限。其核心原理是将专业知识和工作流程模块化,让通用AI助手能够像领域专家一样执行复杂任务。从技术价值看,Skill不仅提升了代码生成的准确性,更重要的是实现了业务流程的自动化集成,如代码规范检查、API文档生成等具体场景。这种机制特别适用于需要结合内部工具链和特定业务逻辑的企业环境,能够显著提升开发效率和质量。通过安装PPT生成、SpringBoot项目创建等专项Ski

weixin_33672109的博客 413
上一篇: Python单元测试框架《python 自动化框架 pytest》
下一篇: 你真的会面试么?如何向面试官结束自己的项目?
程序媛月下
博客等级 码龄7年 5262粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值