准备: 1:一台调度机(windows GUI),因为windows图形界面方便看压测监控信息
2:N台执行机(linux)
3:csv参数文件的配置
在整个过程中遇到一个比较棘手的问题:执行访问不到csv参数文件。
------------分析:
因为测试脚本jmx文件只需要放在调度机上,搭建好集群后,调度机会自动同步测试脚本到执行机上。 但调度机是windows环境,执行机是linux环境,会出现csv所在的目录不一致。从而在执行机执行脚本的时候会出现如下错误:
2017-10-31 17:29:14,133 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2017-10-31 17:29:14,134 INFO o.a.j.s.FileServer: Stored: \2017\flowproduct.csv
2017-10-31 17:29:14,134 ERROR o.a.j.t.JMeterThread: Test failed!
java.lang.IllegalArgumentException: File \2017\flowproduct.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:430) ~[ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:346) ~[ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:203) ~[ApacheJMeter_components.jar:3.3 r1808647]
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:393) ~[ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:385) ~[ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.control.GenericController.next(GenericController.java:158) ~[ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.control.LoopContr
-----------解决方法:
一句话:在执行机看启动的日志,找到jmeter.JMeter:user.dir输出项的配置值(用户目录)。
例如:我们在执行机上将jmeter安装在/opt/haitao/jemter目录。我们写了一个启动jmeter的脚本jmeter.sh文件。这个jmeter.sh就需要放在user.dir目录下。
即:调度机将执行文件自动发送到执行机启动的那个目录下
1:我们启动jmeter.sh的时候发现user.dir=/home/admin,那我们就需要将jmeter.sh移到/home/admin下
2:将jmeter.sh移到/home/admin下
3:jmeter.sh的内容
前些天,在进行分布式参数化测试的时候,出现了如题所示的错误报错信息。此文,针对此做一个简略的重现及分析说明。
JMX脚本线程组参数配置如下所示:
参数文件路径配置如下所示:
执行JMX脚本后,服务器对应日志错误信息(部分)输出如下所示:
综上,如下两种情况下,测试脚本参数化均无法按照预期正确执行:
参数文件路径为绝对路径,但对应路径下不存在
参数文件路径为相对路径,但对应执行机(Slave)服务分发路径下不存在
那么,调度机(Controller)分发脚本到执行机(Slave)的路径是什么呢?查看脚本分发路径有如下两种方式:
一、通过执行机服务日志,user.dir 目录即为分发路径(推荐)
二、分发jmx脚本目录即为执行机服务启动目录,例如执行机服务启动命令行如下所示:
那么,此执行机对应的jmx脚本分发目录为:D:\DevTool\apache-jmeter-3.0\bin
执行JMX测试脚本
第一次,对应分发路径无对应参数文件
第二次,对应分发路径有对应参数文件
执行机(Slave)端控制台输出如下所示: