jmeter 分布式压测配置Linux

jmeter 分布式压测配置Linux,第1张

本文只讲jmeter分布式压测怎么在Linux环境下配置:

使用分布式压测,是因为单个压测机并发到不到系统要求,所以多个压测机同时去压。

一般是由一个主机(master)和几台压力机(slave)组成。

主机 主要是起到启动和收集结果功能(当然也可以参与压测但不建议),测试脚本jmx在这台机器下,执行的时候会发送给每台压力机。

压力机 主要接受主机发送的压测脚本,同时进行压测,并把结果回传给主机。

以下是本人的压测环境,可以参考的去配置:

都是在Linux环境下(有些是主机Windows,压力机Linux,都是这样配置)

master主机:10.244.162.8

slave压测机(三台):10.244.162.9,10.244.162.10,10.244.162.11

主机ping一下压测机,是否可以ping通,否则关闭防火墙或者多个网卡(一台机器可能配置多个网卡多个IP,尤其是Windows当做主机)。

jdk,jmeter安装在主机和压力机下,尽量版本统一,jmeter在这几个机器服务都可以启动jmeter -v,如果权限不够到bin/目录下,命令: chmod 777 jmeter jmeter-server jmeter.sh 。(安装比较简单,这里就不多赘述)

保存。

在apache-jmeter-5.1.1/bin下执行./jmeter-server(代表jmeter启动,监听状态,等待主机发送测试脚本和执行命令) ,

有些启动命令:./jmeter-server -Djava.rmi.server.hostname=10.244.162.10(当前机器的ip),我觉得都行,没编辑配置文件那一项这样启动。

启动就设置完成。

如果是Windows当主机,重启一下jmeter在运行-远程启动既可以看到压测机。

如果是Linux下主机,需要用到命令:

我是在测试jmx脚本的目录下执行,这样方便收集信息。

sh (jmeter启动)  -n -t (jmx脚本) -R  (压力机ip,多个中间用英文逗号隔开) -l (test.jtl)  -e -o  (压测报告结果html文件夹)

sh /app/apache-jmeter-5.2.1/bin/jmeter.sh -n -t test.jmx -R 10.244.162.9,10.244.162.10 -l test.jtl  -e -o  test

注意:主机只传jmx给压力机,如果压测脚本有引用变量文件,比如csv,txt文件等是不传的,压力机也要有这些变量文件,复制过去存放的目录和上面压力机./jmeter-server启动的目录一致(就是你在哪个目录启动的就放在哪个目录下),否则压力机找不到变量文件,执行会报错或者直接结束无测试结果。

当一台jmeter并发数达到瓶颈时,需要多台jmeter。一台控制机(主机),多台负载机(节点机)来进行分布式压测扩大并发数。jmeter分布式可以跨系统配置不论是windows还是linux都可以,这里以windows为例进行讲解。Jmeter分布式架构图如下:

进入节点机A(如果有多个节点机,使用同样方式配置即可),打开配置文件/bin/jmeter.properties,设置server.rmi.ssl.disable=true。很多文章说需要对remote_hosts 进行设置,亲测无须设置!

设置完成后,在cmd中运行\bin\jmeter-server.bat,启动服务等待接收主机指令。

进入控制机,打开配置文件/bin/jmeter.properties,设置 remote_hosts=节点机A的ip:1099

(1099是默认端口,如果有多个节点机请用“,”进行分割)

1.控制机在GUI中的启动节点机,如下图:

2.通过命令启动 jmeter -n -t test.jmx -R节点机A的ip -l test01.jtl

参数含义

n  非gui运行

t  指定测试脚本

R  指定多少个agent启动并参与测试

r  代表全部agent启动并参与测试

l  生成测试结果文件

现象:控制机发出执行命令后,无法接收到节点机的结果信息

查看节点机控制台信息,显然是没有返回数据给 主机

Starting the test on host ip:1099 @ Fri Feb18 16:00:26 CST 2022 (1645171226459)

查看节点机jmeter.log发现,错误日志:

java.net.SocketTimeoutException: connecttimed out

         atjava.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[?:1.8.0_151]

         atjava.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[?:1.8.0_151]

         atjava.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[?:1.8.0_151]

         atjava.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)~[?:1.8.0_151]

         atjava.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_151]

         atjava.net.PlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_151]

         atjava.net.SocksSocketImpl.connect(Unknown Source) ~[?:1.8.0_151]

         atjava.net.Socket.connect(Unknown Source) ~[?:1.8.0_151]

         atorg.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:542)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:414)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)~[httpclient-4.5.5.jar:4.5.5]

         atorg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)~[httpclient-4.5.5.jar:4.5.5]

         atorg.jmeterplugins.repository.JARSourceHTTP.execute(JARSourceHTTP.java:499)~[jmeter-plugins-manager-1.4.jar:?]

         atorg.jmeterplugins.repository.JARSourceHTTP.execute(JARSourceHTTP.java:494)~[jmeter-plugins-manager-1.4.jar:?]

         atorg.jmeterplugins.repository.JARSourceHTTP.reportStats(JARSourceHTTP.java:451)~[jmeter-plugins-manager-1.4.jar:?]

         atorg.jmeterplugins.repository.http.StatsReporter.run(StatsReporter.java:24)[jmeter-plugins-manager-1.4.jar:?]

2022-02-18 15:51:18,114 INFO

o.a.j.s.FileServer: Default base='C:\软件\apache-jmeter-4.0\apache-jmeter-4.0\bin'

分析这是一个网络问题,在节点机ping 主机,无法ping通,协调网络工程师增加策略使得节点机能够ping通主机。

主机再次发送请求,节点机顺利接收请求并返回执行结果,问题搞定!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8707840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存