Jmeter分布式压测实战及踩坑处理(含参数化)
项目中使用Jmeter进行大并发压测时,单机受限内存、CPU、网络IO,会出现服务器压力还没有上
去,但压测服务器由于模拟的压力太大死机的情况。JMeter的集群模式可以让我们将多台机器联合起来
一起产生负载,从而弥补单台机器负载生成能力不足的问题。
分布式压测原理


1、控制机为Master,负载机为Slave
2、Master启动后,会拷贝jmx脚本文件到所有的Slave上
3、Slave会回传压测数据给Master,最后由Master汇总出结果文件
注意事项
1、脚本文件上传到master即可,不用所有的slave都传一份
2、所有机器最好在同一个网段
3、由于master需要发送信息给slave并接收slave回传回来的测试数据,自身会有一定的消耗,建议单独
配置一台机器作为master
4、所有机器的jmeter版本和插件版本要一致
5、如果jmeter版本在4.0以上,需在jmeter.properties中设置 server.rmi.ssl.disable=true
分布式环境配置
Slaves机器配置
编辑所有slave机器jmeter/bin目录下的jmeter.properties文件,slaves机器上remote_hosts不动,根
据需要修改服务端口。默认端口为1099,可以修改为任意未被占用的端口。我这里默认端口没有被占用,
就不做修改。
# Remote Hosts - comma delimited
remote_hosts=127.0.0.1
#remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port)
#server_port=1099
Master机器配置
编辑master机器jmeter/bin目录下的jmeter.properties文件,将所有slave机器的地址配置到文件中,
server_port不用修改。
# Remote Hosts - comma delimited
remote_hosts=166.188.20.86,166.188.21.75(slave机器的ip和端口)
#remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port)
#server_port=1099
master机器也可以作为负载机,在remote_hosts中加上127.0.0.1即可,但考虑到自身消耗,这里
不使用。如果修改了负载机的端口号,则需带上修改后的端口号,我这里使用的默认值,不用再单独
标注。修改了端口号使用如下配置:
# Remote Hosts - comma delimited
remote_hosts=166.188.20.86:2099,166.188.21.75:2099
#remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port)
server_port=2099
参数化文件配置
参数化文件的路径要保持一致,我这里配置在jmeter/bin目录下。注意:所有的slave机器都要上传一
份参数化文件。


分布式压测执行
Slave机器执行
在所有的slave机器上执行 ./jmeter-server 命令,出现以下界面为执行成功。

Master机器执行
确认好所有slave机器都正确启动后,在master机器上执行命令
jmeter -n -t stress0804.jmx -r -l testResult.jtl
命令解析:
- n 非GUI模式运行
- t 要运行的jmx文件
- r 将远程所有的agent启动
- l 生成结果文件
执行结果:

脚本中设置了5个线程,有2台负载机,所有Active为5*2=10个,运行时间2分钟。
常见问题处理
问题一
[test@localhost bin]$ ./jmeter-server
Writing log file to: /home/test/jmeter/apache-jmeter-3.1/bin/jmeter-server.log
Created remote object: UnicastServerRef [liveRef: [endpoint:[127.0.0.1:37863](local),objID:[-3217392f:17b104e6552:-7fff, 742049333908920389]]]
Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address.
An error occurred: Cannot start. localhost.localdomain is a loopback address.
解决方法:执行命令中指定本地IP ./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
问题二
[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[:39308](local),objID:[24e78a63:16243c70661:-7fff, 7492480871343944173]]]
Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
An error occurred: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
解决方法:使用hostname命令获取机器名称,追加一个映射iZwz95j86y235aroi85ht0Z
[root@iZwz95j86y235aroi85ht0Z bin]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
120.79.160.143 iZwz95j86y235aroi85ht0Z
windows中修改c:\windows\system32\drivers\etc\hosts文件,增加一条域名与IP的映射
问题三
[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
解决方法:编辑jmeter.properties文件,将server.rmi.ssl.disable的值改为true
问题四
slave机器无法启动或者没有返回执行数据
解决方法:
1、检查master机器和slave机器能否ping通
2、检查防火墙
3、检查master机器和slave机器的服务器时间是否一致
Jmeter分布式压测实战及踩坑处理(含参数化)的更多相关文章
- 压力测试(八)-多节点JMeter分布式压测实战
1.Jmeter4.0分布式压测准备工作 简介:讲解Linux服务器上jmeter进行分布式压测的相关准备工作 1.压测注意事项 the firewalls on the systems are tu ...
- JMeter分布式压测实战(2020年清明假期学习笔记)
一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...
- jmeter 分布式压测(windows)
单台压测机通常会遇到客户端瓶颈,受制于客户机的性能.可能由于网络带宽,CPU,内存的限制不能给到服务器足够的压力,这个时候你就需要用到分布式方案来解决客户机的瓶颈,压测的结果也会更加接近于真实情况. ...
- jmeter分布式压测对master、slave防火墙配置
首先要了解jmeter分布式压测的基础概念:master为统计结果的服务器,slave为各台压力机,如下图所示 一.结论 针对master 1.修改jmeter.properties的client.r ...
- jmeter分布式压测
stop.sh需要跑Jmeter的服务器上安装Jmeteryum install lrzsz 安装rz.sz命令rz jemter的压缩包 拷贝到/usr/local/tools下面unzip apa ...
- jmeter 分布式压测(Linux)
之前一篇博文写的是如何在Linux上使用jmeter压测,这篇介绍下Linux上jmeter的分布式压测. 和windows上的分布式类似,需要配置agent节点和控制机 一.Agent节点配置 1. ...
- JMeter——分布式压测
一.Jmeter4.0分布式压测准备工作 压测注意事项 the firewalls on the systems are turned off or correct ports ...
- jmeter分布式压测原理简介1
1.什么叫分布式压测? 分布式压测:模拟多台机器向目标机器产生压力,模拟几万用户并发访问 2.分布式压测原理:如下 3.更多补充.....待添加
- jmeter分布式压测 java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
解决办法:1.控制机和代理机:修改jmeter.properties中server.rmi.ssl.disable=true 不启动SSL2.控制机和代理机: Slave(从压力机)启动jmeter- ...
随机推荐
- Java知识复习(二)
如何格式化日期? SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date dat=new Da ...
- 服务器硬件及RAID配置实战
一.RAID磁盘阵列介绍 二.阵列卡介绍 三.阵列卡的缓存 四.实验构建软RAID磁盘阵列 一.RAID磁盘阵列介绍 1.定义 是Redundant Array of Independent Disk ...
- ES6深度解析3:Generators
介绍ES6 Generators 什么是Generators(生成器函数)?让我们先来看看一个例子. function* quips(name) { yield "hello " ...
- Vue 消除Token过期时刷新页面的重复提示
1.问题现象 页面长时间未操作,再刷新页面时,第一次弹出"token失效,请重新登录!"提示,然后跳转到登录页面,接下来又弹出了n个"Token已过期"的后 ...
- Tomcat 中文乱码,设置UTF-8
1.修改tomcat的conf目录下 server.xml文件加上 URIEncoding="UTF-8" <Connector port="8080" ...
- elementui——表格的相同内容单元格合并
在今天工作中遇到了相同单元格需要合并的一个需求,实现记录如下. 实现效果: 任务要求: 对表中体系这一列相同的体系进行合并. 思路:定义一个空数组:[]定义一个变量:0遍历数据如果有相同数据 在空数组 ...
- .NET Core授权失败如何自定义响应信息?
前言 在.NET 5之前,当授权失败即403时无法很友好的自定义错误信息,以致于比如利用Vue获取到的是空响应,不能很好的处理实际业务,同时涉及到权限粒度控制到控制器.Action,也不能很好的获取对 ...
- Formily教程 | formily是中后台复杂场景的表单解决方案
前言 formily 不是一个简单的前端轮子.Formily 是一个由阿里巴巴集团多 BU 共建的面向中后台复杂场景的表单解决方案,它也是一个表单框架.它的前身是供应链平台在 2019 年初对外开源的 ...
- U149791 正多边形变换
原博客网页--洛谷博客 题目地址 如果您对群论有所了解,那么本题就是对二面体群 \(D_{2n}\) 的简单实现,您可以直接跳到代码部分.下面的解题思路只是对二面体群 \(D_{2n}\) 的构造思路 ...
- ARTS第六周
第六周.后期补完,太忙了. 1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有 ...