JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
前些天,在进行分布式参数化测试的时候,出现了如题所示的错误报错信息。此文,针对此做一个简略的重现及分析说明。
JMX脚本线程组参数配置如下所示:

参数文件路径配置如下所示:


执行JMX脚本后,服务器对应日志错误信息(部分)输出如下所示:
2016/06/17 23:06:59 INFO - jmeter.services.FileServer: Stored: E:\026\distributed.csv
2016/06/17 11:06:59 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source) 或者 2016/06/17 23:13:05 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-1
2016/06/17 23:13:05 INFO - jmeter.services.FileServer: Stored: ./distributed.csv
2016/06/17 11:13:05 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source)
综上,如下两种情况下,测试脚本参数化均无法按照预期正确执行:
- 参数文件路径为绝对路径,但对应路径下不存在
- 参数文件路径为相对路径,但对应执行机(Slave)服务分发路径下不存在
那么,调度机(Controller)分发脚本到执行机(Slave)的路径是什么呢?查看脚本分发路径有如下两种方式:
一、通过执行机服务日志,user.dir 目录即为分发路径(推荐)
2016/06/20 15:01:47 INFO - jmeter.util.JMeterUtils: Setting Locale to zh_CN
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading user properties from: D:\DevTool\apache-jmeter-3.0\bin\user.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading system properties from: D:\DevTool\apache-jmeter-3.0\bin\system.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Copyright (c) 1998-2016 The Apache Software Foundation
2016/06/20 15:01:47 INFO - jmeter.JMeter: Version 3.0 r1743807
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.version=1.8.0_66
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.name=Windows 7
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.arch=amd64
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.version=6.1
2016/06/20 15:01:47 INFO - jmeter.JMeter: file.encoding=GBK
2016/06/20 15:01:47 INFO - jmeter.JMeter: Max memory =523763712
2016/06/20 15:01:47 INFO - jmeter.JMeter: Available Processors =4
2016/06/20 15:01:47 INFO - jmeter.JMeter: Default Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeter Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeterHome=D:\DevTool\apache-jmeter-3.0
2016/06/20 15:01:47 INFO - jmeter.JMeter: user.dir =D:\DevTool\apache-jmeter-3.0\bin
2016/06/20 15:01:47 INFO - jmeter.JMeter: PWD =D:\DevTool\apache-jmeter-3.0\bin
二、分发jmx脚本目录即为执行机服务启动目录,例如执行机服务启动命令行如下所示:

那么,此执行机对应的jmx脚本分发目录为:D:\DevTool\apache-jmeter-3.0\bin
执行JMX测试脚本
- 第一次,对应分发路径无对应参数文件
- 第二次,对应分发路径有对应参数文件
执行机(Slave)端控制台输出如下所示:

JMX脚本两次执行结果如下所示:

由执行结果可见,将 JMX 脚本对应参数文件放到正确的目录后,脚本成功执行。
附录:执行机(Slave)日志输出如下所示:
2016/06/20 15:01:47 INFO - jmeter.util.JMeterUtils: Setting Locale to zh_CN
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading user properties from: D:\DevTool\apache-jmeter-3.0\bin\user.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading system properties from: D:\DevTool\apache-jmeter-3.0\bin\system.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Copyright (c) 1998-2016 The Apache Software Foundation
2016/06/20 15:01:47 INFO - jmeter.JMeter: Version 3.0 r1743807
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.version=1.8.0_66
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.name=Windows 7
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.arch=amd64
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.version=6.1
2016/06/20 15:01:47 INFO - jmeter.JMeter: file.encoding=GBK
2016/06/20 15:01:47 INFO - jmeter.JMeter: Max memory =523763712
2016/06/20 15:01:47 INFO - jmeter.JMeter: Available Processors =4
2016/06/20 15:01:47 INFO - jmeter.JMeter: Default Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeter Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeterHome=D:\DevTool\apache-jmeter-3.0
2016/06/20 15:01:47 INFO - jmeter.JMeter: user.dir =D:\DevTool\apache-jmeter-3.0\bin
2016/06/20 15:01:47 INFO - jmeter.JMeter: PWD =D:\DevTool\apache-jmeter-3.0\bin
2016/06/20 15:01:47 INFO - jmeter.JMeter: IP: 10.9.215.47 Name: TEST FullName: TEST.ffp.corp
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Starting backing engine on 1029
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: System property 'java.rmi.server.hostname' is not defined, using localHost address
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Local IP address=10.9.215.47
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: IP address is a site-local address; this may cause problems with remote access.
Can be overridden by defining the system property 'java.rmi.server.hostname' - see jmeter-server script file
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating RMI registry (server.rmi.create=true)
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Bound to registry on port 1029
2016/06/20 15:05:55 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2016/06/20 15:05:55 INFO - jmeter.samplers.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2016/06/20 15:05:55 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2016/06/20 15:05:56 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating JMeter engine on host 10.9.215.47:1029 base '.'
2016/06/20 15:05:56 INFO - jmeter.engine.RemoteJMeterEngineImpl: Remote client host: 10.9.215.49
2016/06/20 15:05:56 INFO - jmeter.services.FileServer: Default base='D:\DevTool\apache-jmeter-3.0\bin'
2016/06/20 15:05:56 INFO - jmeter.services.FileServer: Set new base='.'
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Applying properties {}
2016/06/20 15:05:56 INFO - jmeter.engine.RemoteJMeterEngineImpl: Running test
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
2016/06/20 15:05:56 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2016/06/20 15:05:56 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must contain the string: '.functions.'
2016/06/20 15:05:56 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : 文章详情
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Starting 2 threads for group 文章详情.
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
2016/06/20 15:05:56 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 2 ramp-up 2 perThread 1000.0 delayedStart=false
2016/06/20 15:05:56 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
2016/06/20 15:05:56 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-1
2016/06/20 15:05:56 INFO - jmeter.services.FileServer: Stored: ./distributed.csv
2016/06/20 15:05:56 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source) 2016/06/20 15:05:56 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-1
2016/06/20 15:05:57 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-2
2016/06/20 15:05:57 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source) 2016/06/20 15:05:57 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-2
2016/06/20 15:05:57 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2016/06/20 15:05:57 INFO - jmeter.samplers.DataStrippingSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:05:57 INFO - jmeter.samplers.BatchSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:05:57 INFO - jmeter.engine.StandardJMeterEngine: Test has ended on host 10.9.215.47:1029
2016/06/20 15:07:51 INFO - jmeter.samplers.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2016/06/20 15:07:51 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating JMeter engine on host 10.9.215.47:1029 base '.'
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Remote client host: 10.9.215.49
2016/06/20 15:07:51 INFO - jmeter.services.FileServer: Set new base='.'
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Cleaning previously set properties {}
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Applying properties {}
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Running test
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
2016/06/20 15:07:51 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : 文章详情
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Starting 2 threads for group 文章详情.
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
2016/06/20 15:07:51 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 2 ramp-up 2 perThread 1000.0 delayedStart=false
2016/06/20 15:07:51 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-1
2016/06/20 15:07:51 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
2016/06/20 15:07:51 INFO - jmeter.services.FileServer: Stored: ./distributed.csv
2016/06/20 15:07:52 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-2
2016/06/20 15:07:54 WARN - jmeter.timers.SyncTimer: SyncTimer 集合点 timeouted waiting for users after:3000ms
2016/06/20 15:07:54 INFO - jmeter.protocol.http.sampler.HTTPHCAbstractImpl: Local host = TEST
2016/06/20 15:07:54 INFO - jmeter.protocol.http.sampler.HTTPHC4Impl: HTTP request retry count = 0
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread is done: 文章详情 1-1
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-1
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread is done: 文章详情 1-2
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-2
2016/06/20 15:07:55 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2016/06/20 15:07:55 INFO - jmeter.services.FileServer: Close: ./distributed.csv
2016/06/20 15:07:55 INFO - jmeter.samplers.DataStrippingSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:07:55 INFO - jmeter.samplers.BatchSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:07:55 INFO - jmeter.engine.StandardJMeterEngine: Test has ended on host 10.9.215.47:1029
执行机(Slave)服务日志信息
至此,此文顺利完结,希望此文能够给初学 JMeter 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法的更多相关文章
- 云笔记项目- 上传文件报错"java.lang.IllegalStateException: File has been moved - cannot be read again"
在做文件上传时,当写入上传的文件到文件时,会报错“java.lang.IllegalStateException: File has been moved - cannot be read again ...
- java.lang.IllegalArgumentException 不合法的参数异常
报错内容: IllegalArgumentException 不合法的参数异常 十二月 06, 2016 10:06:56 上午 org.apache.catalina.core.StandardWr ...
- 登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)
处理一个老项目,DOWN下项目并配好之后,启动没问题,但是登陆之后首页显示如下: 控制台报错如下: 严重: Servlet.service() for servlet jsp threw except ...
- Jmeter学习—004—使用代理录制脚本—HTTP代理服务器(APP、web皆可)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mmmmmmm_2niu/article/details/78136253记得我最开始使用jmeter ...
- JMeter参数文件的相对路径
很多教程里都说“尽可能将参数文件配置为相对路径,以更好的去适配Slave环境”或者“把XX放到相对路径” 这里相对路径是指的 C:\Program Files (x86)\apache-jmeter- ...
- mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法
补充:正常情况下,建议数据库备份最好用工具进行备份,通过拷贝数据库表进行数据迁移,不同的环境会出现各种不同的意外问题. 背景:今天在整理一个网站的时候,操作系统由于系统自动更新导致一直出现系统蓝屏死机 ...
- JMeter学习(二)录制脚本
---------------------------------------------------------------------------------------------------- ...
- JMeter学习(二)录制脚本(转载)
转载自 http://www.cnblogs.com/yangxia-test 环境 Badboy version 2.1.1 JDK: 1.7.0_67 Apache JMeter-2.11 - ...
- jmeter CSV Data数据中带有逗号解决方法
今天用jmeter做性能测试,由于参数的数据中含有逗号,一直失败,尝试了几次终于成功,先写下经验 首先看设置 E:\apache-jmeter-2.12\bin\litaojunzb.csv文件格式如 ...
随机推荐
- [译]SSAS下玩转PowerShell(三)
在第一篇中简单介绍了PowerShell,包含基本的一些命令,以及如何打开PowerShell,并且导航到SSAS对象.第二篇中学习了如何使用变量根据当前日期创建SSAS备份,以及如何运行MDX和XM ...
- div滚动底部加载li,window滚动底部加载li
DIV固定高度滚动条滚动最底部,加载新的li <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...
- JavaOO面向对象中的注意点(二)
1.封装: 封装主要体现在:组装类 和 信息隐藏. a.信息隐藏:①访问修饰符:private ②方法的实现:get/set方法.run()方法-控制流程 b.组装类: ①类的定义:属性.构造.行为( ...
- HDU 1074 Doing Homework (状压dp)
题意:给你N(<=15)个作业,每个作业有最晚提交时间与需要做的时间,每次只能做一个作业,每个作业超出最晚提交时间一天扣一分 求出扣的最小分数,并输出做作业的顺序.如果有多个最小分数一样的话,则 ...
- 校际联合Contest
每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...
- strftime 日期时间格式化
strftime() 函数根据区域设置格式化本地时间/日期,函数的功能将时间格式化,或者说格式化一个时间字符串. size_t strftime(char *strDest,size_t maxsiz ...
- python之 rabbitmq
一.发布hello world 首先我们看一个最简单的消息队列系统 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ ...
- dedecms中调用制定栏目
{dede:type typeid='5'} <li> <a href="[field:typelink/]" target="_blank" ...
- mallmold开源商城系统网银在线chinabank支付插件
最近没事捣鼓项目,找了个轻型商城系统mallmold,用起来还觉的挺不错的,尤其是mallmold中文版,赞一个.中文版集成了大部分主流支付系统,但因是个人网站,没法获得对应的服务,最终选择了网银在线 ...
- Python打包成exe:屡试不爽的cxfreeze!
Python用cxfreeze打包,不用像什么Pyinstaller繁杂的写配置文件,一行命令足以! 安装好cxfreeze后,进行python脚本目录,执行: C:\Python27\Scripts ...