搭建jmeter性能测试分布式环境
一、JAVA环境安装
1 | # 创建文件夹 |
- Java环境变量配置
1 | # set java enviroment |
- 刷新配置文件
1 | source /etc/profile |
二、Jmeter安装
1 | # 创建文件夹 |
- jmeter环境变量配置
1 | # set jmeter enviroment |
- 刷新配置文件
1 | source /etc/profile |
三、分布式压测原理
1、控制机为Master,负载机为Slave
2、Master启动后,会拷贝jmx脚本文件到所有的Slave上
3、Slave会回传压测数据给Master,最后由Master汇总出结果文件
📌 注意事项
- 脚本文件上传到
master即可,不用所有的slave都传一份 - 由于
master需要发送信息给slave并接收slave回传回来的测试数据,自身会有一定的消耗,建议单独配置一台机器作为master - 所有机器的
jmeter版本和插件版本要一致 - 如果
jmeter版本在4.0以上,需在jmeter.properties中设置server.rmi.ssl.disable=true
四、分布式环境配置
🎃Master环境配置
- 编辑master机器jmeter/bin目录下的jmeter.properties文件,将所有slave机器的地址配置到文件中,server_port不用修改。
1 | # Remote Hosts - comma delimited |
🎃Slave环境配置
- 编辑所有
slave机器jmeter/bin目录下的jmeter.properties文件,slaves机器上remote_hosts不动,根据需要修改服务端口。默认端口为1099,可以修改为任意未被占用的端口。我这里默认端口没有被占用,就不做修改。
1 | # Remote Hosts - comma delimited |
- 在所有的
slave机器上执行./jmeter-server命令,出现以下界面为执行成功。 - 修改
jmeter-server文件
1 | RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.143 |
- 性能配置优化
1 | # 切换至bin目录下 |
五、执行压测
1 | # JthreadNum 线程数 # JloopNum 循环次数 # JrampupTime 循环时间 # JsynchronizeNum 同步定时器线程数 |
六、常见问题
w 在
master上运行jmeter-server.bat时,出现Exception creating connection to:192.16..;nested exception is:java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定的文件)错误
解决方案
- 修改
apache-jmeter/bin/jmeter.properties参数:server.rmi.ssl.disable=true
w 远程启动
slave机器时,如出现Jmeter nested exception is:[java.net](http://java.net/).ConnectException connection timed out:connect错误
解决方案
查看
slave上的ip与master配置文件中的ip是否一致;查看防火墙是否关闭
1
2# 关闭防火墙
systemctl stop firewalld.service
w 启动
jmeter时,报错:Error occurred during initialization of VM Could not reserve enough space for object heap errorlevel=1
解决方案
这个错误一般是由于
JMeter需要的堆空间超过了可用空间,导致JVM无法分配足够的内存。你可以尝试以下方式来解决该问题:修改
JMeter堆空间占用量在
JMeter的启动脚本中,你可以通过设置堆最小值和最大值来增加可用堆空间:1
set HEAP=-Xms512m -Xmx1024m
这里,
Xms是设置初始堆大小,Xmx是设置最大堆大小,单位为 MB。你可以根据需要适当增大堆空间大小。如果你使用的是 macOS 或 Linux 系统,那么你可以通过shell脚本修改相应的环境变量。减少其他应用程序的内存占用
如果你同时在计算机上运行了其他内存占用大的应用程序,那么就会导致
JMeter无法获取足够的内存空间。此时,关闭其他应用程序,或者降低它们的内存占用量,是比较有效的解决办法。重新安装
JDK和JMeter如果以上两种方式无法解决问题,你可以尝试重新安装
JDK和JMeter,或者尝试使用其他版本的JDK和JMeter








