Jmeter分布式压测记录

本文详细介绍了如何进行JMeter的分布式压测,包括调度机和负载机的配置、端口设置、版本一致性以及常见问题和解决方案。强调了GUI模式的弊端、脚本资源的处理、插件匹配的重要性,并提醒读者理解工具工作原理以快速解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jmeter分布式压测记录
资源下载
jmeter 安装包:链接:https://pan.baidu.com/s/1IXi_xekIzvU9jdYFqmt-JA 密码:857y
JDK下载链接:链接:https://pan.baidu.com/s/1zI1yp42FOOZNi_zOD-xXvw 密码:zdzt
旧版本jmeter插件官网:https://jmeter-plugins.org/downloads/old/
调度机配置
调度机进入到jmeter的安装目录下的bin文件夹,找到
jmeter.properties
配置:

remote_hosts=xxx.xxx.xx.xxx:1099,xxxx.xxxx.xxx.xxxx:1099
如果需要让自己机器也负载的话把自己IP也加上localhost:1099 逗号隔开。
加上自己机器后,自己机器也要打开 jmeter-server.bat文件,
目前你还不清楚此文件
,请先看下边。

注意端口默认1099,本地调度机如果也要干活儿,就如上 添加localhost:1099。
本地机器也要开启jmeter-server,Linux/Mac下直接运行./jmeter-server(Windows下jmeter-server.bat)
查找 server_port=1099修改

server_port=1099 查找到是这样 把前面#与去掉。

查找server.rmi.localport=修改为:

server.rmi.localport=1099 前面有#号的去掉#号 端口写1099

重启jmeter,如下:

至此调度机配置结束。
负载机配置
前提条件:负载机使用的jmeter版本需要和调度机版本保持一致。jdk版本最好也要保持一致,防止出现幺蛾子!
远程到负载机,将本地的jmeter打包传到负载机上去,解压后,找到bin目录下的jmeter-server(Windows系统找jmeter-server.bat)
然后运行:
./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
xxx.xxx为你当前机器的IP地址。无需指定端口号,端口号默认1099。
出现:
Created remote object: UnicastServerRef [liveRef: [endpoint:1x.xxx.x.xxx:45781,objID:[3a2cabe3:16e87bac70c:-7fff, -275550698911741061]]]
说明负载机启动成功。负载机配置结束。
坑:
注意,负载机要开放该端口(1099)的访问权限。
关闭防火墙或者设置端口白名单(1099)。
防火墙操作:https://blog.youkuaiyun.com/baidu_36124158/article/details/90603496
禁用虚拟网卡(ifconfig查看所有网卡,然后,ifconfig 虚拟网卡名字 down关闭虚拟网卡),否则会出幺蛾子。如果不想禁用,也是有办法指到正确的IP地址的,方法自行百度。
被测服务资源使用监控配置

远程执行
坑1:本地不应该以GUI的形式控制本机和远程机器运行测试,因为GUI形式的执行非常消耗内存,正确的方式应该是:
jmeter -n -t /Users/dingtone/testTools/apache-jmeter-3.1/bin/IPlocation.jmx -l ./result/ -r
-n 表示不以GUI形式运行测试
-t 表示被执行脚本
-r 表示根据jmeter配置文件中的远程负载地址,以远程的方式运行测试
-l 表示报告生成的地址
坑2:
脚本使用到的csv文件,资源文件需要以相对路径的形式添加在脚本中,否则远程机器的脚本在执行过程中会找不到该文件,同理,脚本依赖的csv文件等资源需要分别上传到远程负载机上的对应目录下。jmeter会主动分发脚本到负载机,但是不会主动分发依赖资源。

坑3:
远程负载机不仅需要在jmeter版本,jdk版本上与调度机保持一致,而且jmeter安装的插件也需要与调度机保持一致,否则没有安装对应插件的负载机会报错。坑人的是负载机只是起一下就down掉了,没有任何提示,MMP 至少命令行没有,可能log文件里会报错。

总结:
不要一味在网上找答案,遇到错误的原因千差万别,需要自己对使用的工具的工作原理有所了解,自己思考工作原理中的某个工作流程可能导致的现在的问题,再根据推断去验证自己的想法,才能少走弯路的解决自己的问题。排查错误的利器一个是看命令行打印的错误,还有就是log文件非常重要!

### JMeter 分布式吞吐量下降的原因分析 在分布式环境下,当发现 JMeter 的吞吐量显著低于预期时,可能由多种因素引起。通常情况下,这可能是由于网络延迟、资源争用或是配置不当所造成的。 #### 网络带宽与延迟的影响 在网络环境中,Master 和 Slave 节点之间的通信依赖于稳定的网络连接。如果网络带宽不足或存在较高的延迟,则会影响试脚本和结果数据的传输速度,进而导致整体吞吐量受到影响[^1]。 #### 资源竞争问题 随着并发用户的增加,在同一时间向目标服务器发起大量请求可能会造成 CPU、内存等硬件资源的竞争。此外,操作系统级别的线程调度也可能成为瓶颈所在。因此需要确保每台参与试的计算机都具备足够的处理能力,并且合理设置 JVM 参数以优化性能表现。 #### 配置错误排查 对于某些特定版本的 JMeter 可能会遇到因默认参数设定不合理而导致的试效果不佳的情况。例如,RMI 连接超时时间过短等问题可以通过调整 `jmeter.properties` 文件中的相应选项来进行修正[^4]。 ```bash # 修改 jmeter.properties 文件中关于 RMI 设置的部分 server.rmi.ssl.disable=true client.rmi.localport=0 mode=Standard ``` 另外需要注意的是,为了使各个节点之间能够正常通讯并减少不必要的开销,建议按照官方文档指导完成必要的防火墙规则配置以及关闭不必要的安全防护措施(如 SELinux)。 --- ### 提升 JMeter 分布式吞吐量的方法 针对上述提到的各种潜在原因,可以从以下几个方面入手改善: - **增强基础设施建设**:选用高性能计算设备作为 Master/Slave 机器;采用高速稳定的数据中心内部网络环境。 - **优化软件层面配置**:适当调大 Java 堆大小和其他 JVM 相关参数;根据实际需求定制化修改 JMeter 属性文件内的各项数值。 ```properties # Example of adjusting heap size for better performance HEAP="-Xms2g -Xmx8g" ``` - **监控系统状态变化**:利用 Grafana 结合 Prometheus 或者其他开源工具收集实时指标信息以便及时发现问题所在;也可以借助 Apache JMeter 自身提供的监听器组件记录详细的日志用于后续分析诊断[^2]。 - **分批次逐步加**:避免一次性加载过多虚拟用户数给被对象带来过大冲击,而是采取渐进式的策略让负载平稳上升直至达到预设峰值后再维持一段时间观察响应情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值