jmeter分布式压测

1.系统要求并发用户为10000,此时无论配置再高的压力机,单台jmeter均无法模拟并发10000线程,需要通过分布式压测方案来实施

关于远程测试,参考jmeter官方文档:https://jmeter.apache.org/usermanual/remote-test.html

架构图如下:

 

 2.需要注意几点:

<1>.master,slave机器都要关闭防火墙或者slave机器开放1099端口(slave机器默认占用1099号端口):

  linux压力机开放指定端口命令:

 $ iptables -I INPUT -p tcp --dport 1099 -j ACCEPT

 

<2>.master,slave ,测试服务器最好都在一个子网下(最低要保证压力机和服务器是在一个子网下),否则带宽会受到影响,在局域网下带宽通常都是1G左右,可以使用iperf3 测试下

<3>.master,slave 机器的jdk版本,jmeter版本必须一致

<4>.slave机器需要禁用SSL ,修改slave机器jmeter.propertis文件 server.rmi.ssl.disable=true

 

 <5>.slave机器默认占用 1099端口,如果冲突了可以修改jmeter.propertis文件server_port:

 

 <6>.远程启动slave机器时,master会发送测试脚本给slave,slave机器各自执行相同的测试脚本,如果脚本中设置的线程

数是2000,slave机器数量为2,那么相当于并发4000线程

<7>.master机器需要设置slave机器的IP地址,这里的 master是windows,修改jmeter配置文件jmeter.properties 添加remote_hosts

 

 <8>.master机器也需要禁用SSL

 

 

 <9>.为了防止压测中内存溢出,修改jvm堆内存大小

windows下修改jmeter.bat:

set HEAP=-Xms2g -Xmx4g -XX:MaxMetaspaceSize=256m

 

 linux下修改jmeter.sh:

 

 

3.启动slave机器:

这里的 slave机器为linux,已关闭防火墙,并禁用SSL,进入jmeter的bin目录下(如果配置了环境变量则不需要),执行如下命令:

./jmeter-server -Djava.rmi.server.hostname=压力机ip地址

如果启动报错则可能是:

1.linux防火墙未关闭,需要关闭防火墙或开放1099端口

2.1099端口被占用,可以修改 jmeter.propertis文件remote_port 

3.当前用户不是root,无权限

4.未禁用SSL

5.jmeter已启动

执行成功如下图所示:

 

 4.启动master机器

这里使用jmeter 命令行方式启动,命令如下:

jmeter -n -t D:/Jmeter/tsf.jmx -r -l D:/Jmeter/tsf/tsf.log -e -o D:/Jmeter/tsf/report

 -n -t 指定测试脚本路径
-r 设置远程启动,即使用slave机器压测
-l  生成测试日志
-e -o 指定测试结果路径
5.如果在windows下,jmeter启动可能会提示:“Engine is busy – please try later”
解决方法参考:https://www.cnblogs.com/mxcl/p/12879023.html
试过禁用master机器 vmnet1 和vmnet8的网络,再次执行命令,可以远程启动压力机压测

 

 

 

 

posted @ 2020-11-25 15:55  maxwell11  阅读(467)  评论(0编辑  收藏  举报