首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMeter Maven mojo使用大型JTL文件抛出IllegalArgumentException

JMeter Maven mojo使用大型JTL文件抛出IllegalArgumentException
EN

Stack Overflow用户
提问于 2016-01-18 22:43:12
回答 2查看 571关注 0票数 2

当我在线程组上使用较大的循环计数(15个HTTP请求上的100个迭代)运行我的JMeter测试时,我会从JMeter中得到一个巨大的JTL文件。

对于我使用的‘m maven-plugin (https://github.com/jmeter-maven-plugin/jmeter-maven-plugin)来说,这是一个问题,它使用java.util.Scanner扫描JTL文件,查找"false“以查看测试是否失败。因为文件太大(1.8GB),所以我会遇到以下故障。

代码语言:javascript
复制
[ERROR] Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:1.10.1:jmeter (jmeter-tests) on project performance-tests: Execution jmeter-tests of goal com.lazerycode.jmeter:jmeter-maven-plugin:1.10.1:jmeter failed. IllegalArgumentException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:1.10.1:jmeter (jmeter-tests) on project performance-tests: Execution jmeter-tests of goal com.lazerycode.jmeter:jmeter-maven-plugin:1.10.1:jmeter failed.
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
       at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
       at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
       at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
       at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
       at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
       at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
       at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:497)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
       at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
       at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution jmeter-tests of goal com.lazerycode.jmeter:jmeter-maven-plugin:1.10.1:jmeter failed.
       at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
       ... 20 more
Caused by: java.lang.IllegalArgumentException
       at java.nio.CharBuffer.allocate(CharBuffer.java:334)
       at java.util.Scanner.makeSpace(Scanner.java:840)
       at java.util.Scanner.readInput(Scanner.java:795)
       at java.util.Scanner.findWithinHorizon(Scanner.java:1685)
       at com.lazerycode.jmeter.FailureScanner.hasTestFailed(FailureScanner.java:36)
       at com.lazerycode.jmeter.JMeterMojo.parseTestResults(JMeterMojo.java:70)
       at com.lazerycode.jmeter.JMeterMojo.execute(JMeterMojo.java:54)
       at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
       ... 21 more

我正在使用ignoreResultFailures = true作为j米-maven-plugin的参数,从而避免使用java.util.Scanner而失败。理想情况下,of maven-plugin将处理非常大的JTL文件,但JTL文件的大小似乎有点极端。

是否有任何JMeter设置可以缩小JTL文件的大小?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-18 22:45:23

检查您的测试计划是否启用了“功能测试模式”。

http://jmeter.apache.org/usermanual/listeners.html

要保存的信息是可配置的。要获得最大的信息,请选择"xml“作为格式,并在Test元素上指定"Functional”。如果未选中此框,则默认保存的数据包括时间戳(自1970年1月1日午夜以来的毫秒数)、数据类型、线程名称、标签、响应时间、消息和代码以及成功指示器。如果选中,将记录所有信息,包括完整的响应数据。

如果选中,这将导致一个大的JTL文件,因为所有冗长的请求和响应数据都会被保存。也许你打开它是为了调试你的测试而忘了关掉它?

票数 1
EN

Stack Overflow用户

发布于 2016-01-19 03:21:01

看起来您存储的太多了,也就是说,响应数据会造成很大的开销。因此,建议:

  • 使用CSV输出格式
  • 不要存储响应数据(至少对于成功的采样器)

因此,在user.properties文件中添加接下来的2行(在JMeter安装的/bin文件夹下)

代码语言:javascript
复制
jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.response_data=false

您需要重新启动JMeter来获取更改。

示例"good“结果保存配置应该如下所示:

参考资料:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34865446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档