Jmeter分布式压测

释放双眼,带上耳机,听听看~!

 一、原因

1、当你想并发很大的时候(比如3000)那么一台jmeter可能就不能胜任了,这时候就需要多台jmeter同时加压

2、当jmeter压力机安装在没有gui的linux上,又不想通过非gui的方式完成性能测试

二、原理

原理很简单就是找一台装有jmeter的机器当控制端,由这个控制端统一控制其它装有jmeter的机器作为代理,产生压力。如下图

Jmeter分布式压测

三、安装jdk和jmeter

1、分别下载windows版本和linux版本的jdk,jdk版本1.8。windows点击安装包一路下一步即可。linux将tar.gz包上传linux解压缩并配置环境变量即可,参见 https://www.cnblogs.com/rslai/p/7859542.html

2、从 http://jmeter.apache.org/download_jmeter.cgi 下载最新jmeter安装包。windows系统的是zip压缩i文件,linux系统的是tar.gz压缩包。也是简单的解压缩即可。 

四、配置controller

本文档使用1.10机器作为控制端,1.11作为代理,ip地址需要根据你的实际情况加以修改,如下图:

 Jmeter分布式压测

1、修改 jmeter.properties 配置文件

打开 C:\apache-jmeter-5.1.1\bin\jmeter.properties 配置文件(这是我的jmter解压位置,根据你的位置打开相应文件)

a)找到 server.rmi.ssl.disable 配置,将行首的注释删掉并改为true 


1
2
1server.rmi.ssl.disable=true
2

如果没有配置运行脚本的时候会报如下图错误

Jmeter分布式压测

   b)配置代理地址,找到 remote_hosts 并配置如下

    其中1.11就是一台代理ip地址1099是在代理上启动的jmeter-server的监听端口。每台代理以“,”号分割


1
2
1remote_hosts=127.0.0.1,192.168.1.11:1099,192.168.1.12:1099,192.168.1.13:1099,192.168.1.10:1099
2

c)配置代理连接控制端ip地址

打开 C:\apache-jmeter-5.1.1\bin\jmeter-server.bat 文件,添加如下内容,添加位置无所谓只要在 set ARGS= 前即可,其中 192.168.1.10就是你的控制端的ip地址


1
2
1set rmi_host=-Djava.rmi.server.hostname=192.168.1.10
2

修改 set ARGS= 配置,原来配置信息如下


1
2
1set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER%
2

在最后添加  %rmi_host%,添加后如下


1
2
1set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %rmi_host%
2

以上配置非必须。如果你的控制端只有一块网卡并且没有安装虚拟机等软件就可以不用配置。

因为在控制端连接代理后会通知代理控制端的ip地址,然后代理会在测试完成后主动连接控制端,以便将测试结果回传给控制端。此时如果有多块网卡就有可能连接失败,错误现象如下。

另外一个解决方式是将虚拟网卡或第二块网卡禁用,这样就不会出现连接不上控制端的问题但如果不小心启用的网卡还会出现此问题。

Jmeter分布式压测

  Jmeter分布式压测

 Jmeter分布式压测

五、配置agent

1、修改 jmeter.properties 配置文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1根据你安装的目录修改
2vi /home/apache-jmeter-5.1.1/bin/jmeter.properties
3
41、将原来的
5#server_port=1099
6
7前边的注释去掉改为
8server_port=1099
9
102、将原来的
11#server.rmi.localport=4000
12
13前边的注释去掉改为
14server.rmi.localport=1099
15

这里的端口号如果不改也可以,但jmter每次启动都会换一个端口,这样每次都要修改controller的remote_hosts配置信息比较麻烦。不配置如下图端口每次启动都改变

Jmeter分布式压测

找到 server.rmi.ssl.disable 配置,将行首的注释删掉并改为true


1
2
1server.rmi.ssl.disable=true
2

如果没有配置运行脚本的时候会报如下图错误

Jmeter分布式压测

2、修改 jmeter-server 启动脚本


1
2
3
4
5
6
7
8
1vi jmeter-server
2
3将
4#RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
5
6改为
7RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.11
8

改后如下图,同样如果linux只有一块网卡也无需设置。

Jmeter分布式压测

另外一个方法是启动时候指定ip地址如下


1
2
1./jmeter-server   -D java.rmi.server.hostname=192.168.1.11
2

 2、启动 jmeter-server

linux上执行 ./jmeter-server 命令windows上双击 jmeter-server.bat 即可,启动成功后如下


1
2
3
4
1[root@bj-zd2f-vm-ceshi-test-loadrunner1 bin]# ./jmeter-server
2Using local port: 1099
3Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.1.11:1099](local),objID:[258e0404:16db9c33fc1:-7fff, -5488498502529841046]]]
4

使用上面命令启动 jmeter-server虽然可以使用但只要关闭xshell后就不能用了,可以使用如下命令运行在后台


1
2
1nohup ./jmeter-server &
2

如果重新启动服务器那还要每台服务器重新运行 jmeter-server,可以直接将启动命令放到profile文件中这样jmeter-server会跟随系统启动而运行


1
2
3
4
5
6
7
8
9
10
1打开profile文件
2vi /etc/profile
3
4在profile最后添加运行jmeter-server命令
5cd /home/apache-jmeter-5.1.1/bin
6nohup /home/apache-jmeter-5.1.1/bin/jmeter-server &
7
8保存profile在命令行执行如下命令,使profile配置生效
9source /etc/profile
10

六、分布式压测

 1、在控器器中打开脚本

Jmeter分布式压测

 2、点击 run->Remote Start 下的agent压测

 Jmeter分布式压测

压测完成后就可以看到报告了。

 Jmeter分布式压测

七、分布式压测中的参数文件问题

1、当脚本引用csv参数文件后不要使用绝对路径

Jmeter分布式压测

2、将此csv文件上传到所有agent

csv文件需要上传到启动 jmeter-server时候的目录下,由于在profile文件中添加了 cd /home/apache-jmeter-5.1.1/bin 命令,所以将csv文件传到此目录 /home/apache-jmeter-5.1.1/bin 即可

 

 

 

 

 
 

给TA打赏
共{{data.count}}人
人已打赏
安全网络

CDN安全市场到2022年价值76.3亿美元

2018-2-1 18:02:50

安全运维

hadoop常见错误

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索