21.JMeter分布式测试


目录

1、JMeter分布式测试

2、操作

3、负载机启动报错问题


1、JMeter分布式测试

  • 分布式运行
    • 是指用JMeter控制机控制远程多台负载机来产生负载
    • 应用场景?
      • 当性能测试的时候需要的负载【用户/请求】太高,一台测试机无法模拟的时候
      • 一个JMeter支持1000 ~ 1500并发左右
      • 就可以使用多台测试机来一起模拟需要达到要求的负载量
      • 同时,被测应用与测试机/负载机一般位于同一个网段,这样能减少网络带宽的消耗,测试结果更真实
      • 这就是分布式
  • JMeter控制机与远程负载机是通过RMI方式通信的
    • 需要在负载机上运行Agent程序【jmeter-server】
  • JMeter控制机
    • 运行JMeter GUI的系统,用于控制测试
  • JMeter负载机
    • 干活的,运行jmeter-server的系统
    • 从控制机接收命令并将请求发送到目标测试系统
  • 目标测试系统
    • 就是被测服务器,计划进行压力测试的服务,如web服务器
  • 控制机配置
    • ~JMETER_HOME/bin/jmeter.properties文件
    • 修改remote_hosts = 127.0.0.1为负载机地址,用","分割
      • 如 remote_hosts = 192.168.0.100:1099,192.168.0.101:1099,192.168.0.102:1099
    • 启动JMeter
  • 负载机配置
    • 负载机上,执行 ~JMETER_HOME/bin/jmeter-server.bat 【或者jmeter-server】
  • JMeter分布式测试注意事项:
    • 1)防火墙关闭了,或者开放了对应的端口(如果你没有设置,那么是有个默认端口的)
    • 2)所有的客户端在同一个网络
    • 3)确保JMeter可以访问服务器
    • 4)所有机器的JMeter版本和JDK版本,必须保持一致
    • 5)已经为RMI设置了SSL或者将其禁用
  • 开始负载测试前,可以查看控制机上的jmeter.log
    • 查看是否有相关分发到负载机进行测试的信息
  • 控制机和负载机的SSL配置
    • 当然目前来说,建议禁用SSL配置
    • 从JMeter4.0开始,RMI的默认传输机制使用SSL。
    • SSL需要密钥和证书才能起作用,如果启用SSL,需要配置控制机和负载机的SSL密钥
    • %JMETER_HOME%/bin/目录中,包含用于生成名为rmi的密钥(及其证书)的密钥库的脚本create-rmi-keystore.bat/create-rmi-keystore.sh
    • 运行上述脚本,生成 rmi_keystore.jks keystore在bin目录下
      • 控制机生成这个文件,然后拷贝到所有负载机的JMeter的bin目录下
    • 注意,默认的有效期是7天。
  • 还需要配置jmeter.properties文件,启用ssl
  • 启动:
    • 控制机:
      • 如果配置好了,会多出远程负载机的地址
  • 负载机                        
    • 要启动jmeter-server.bat 【或者 jmeter-server】

2、操作

  • 负载机:
    • 负载机上安装jdk、jmeter
    • 修改配置,关闭ssl,放开1099端口
    • 启动jmeter-server
# /etc/profile

77 export JAVA_HOME=/usr/java/jdk1.8.0_181
78 export JMETER_HOME=/usr/local/apache-jmeter-5.4.1
79 export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:.
80 export PATH=$PATH:$JAVA_HOME/bin:$JMETER_HOME/bin


[root@xxx bin]# which java
/usr/java/jdk1.8.0_181/bin/java
[root@xxx bin]# which jmeter
/usr/local/apache-jmeter-5.4.1/bin/jmeter
[root@xxx bin]#

[root@xxx bin]# vim jmeter.properties

267 # Remote Hosts - comma delimited
268 remote_hosts=127.0.0.1
269 #remote_hosts=localhost:1099,localhost:2010
270
271 # RMI port to be used by the server (must start rmiregistry with same port)
272 server_port=1099

343 #
344 # Set this if you don't want to use SSL for RMI
345 server.rmi.ssl.disable=true
346 #---------------------------------------------------------------------------
347 #         Include Controller
348 #---------------------------------------------------------------------------
349

#    启动jmeter-server
[root@xxx bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.0.110:35752](local),objID:[-19d27740:1834f2d850a:-7fff, 3051356038780794490]]]
Starting the test on host 192.168.0.110:1099 @ Sun Sep 18 14:02:38 CST 2022 (1663480958954)
Finished the test on host 192.168.0.110:1099 @ Sun Sep 18 14:02:39 CST 2022 (1663480959955)
Starting the test on host 192.168.0.110:1099 @ Sun Sep 18 14:03:03 CST 2022 (1663480983484)
Finished the test on host 192.168.0.110:1099 @ Sun Sep 18 14:03:04 CST 2022 (1663480984593)
  • 控制机配置:
    • 也是关闭ssl配置
      • server.rmi.ssl.disable=true
    • 添加负载机调用地址
      • remote_hosts=192.168.0.110:1099,192.168.0.111:1099,192.168.0.112:1099
# 控制机配置
# xxx @ xxxdeMacBook-Pro in ~/Software/apache-jmeter-5.4.1/bin [14:08:35]
$ vim jmeter.properties

345 #
346 # Set this if you don't want to use SSL for RMI
347 #server.rmi.ssl.disable=false
348 server.rmi.ssl.disable=true
349 #---------------------------------------------------------------------------
350 #         Include Controller
351 #---------------------------------------------------------------------------
352

264 #---------------------------------------------------------------------------
265 # Remote hosts and RMI configuration
266 #---------------------------------------------------------------------------
267
268 # Remote Hosts - comma delimited
269 #remote_hosts=127.0.0.1
270 remote_hosts=192.168.0.110:1099,192.168.0.111:1099,192.168.0.112:1099
271 #remote_hosts=localhost:1099,localhost:2010
272
273 # RMI port to be used by the server (must start rmiregistry with same port)
274 server_port=1099
275
  • 启动
    • 启动控制机,并且观察负载机上日志

3、负载机启动报错问题

  • 如果报错,如下
[root@ksie5mpd1rte5e2b bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.0.1:42875](local),objID:[4887b48a:188f6da96fe:-7fff, 6493286691729345055]]]
Server failed to start: java.rmi.RemoteException: Cannot start. ksie5mpd1rte5e2b is a loopback address.
An error occurred: Cannot start. ksie5mpd1rte5e2b is a loopback address.
  • 需要修改~JMETER_HOME/bin/jmeter-server文件
    • RMI_HOST_DEF 这个注释放开,并填上自己的ip地址
# One way to fix this is to define RMI_HOST_DEF below
#RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
RMI_HOST_DEF=-Djava.rmi.server.hostname=101.91.201.211
  • 再重新启动负载机即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值