Jmeter 由于regex.Perl5Matcher导致Java.lang.StackOverflower错误

Jmeter 由于regex.Perl5Matcher导致Java.lang.StackOverflower错误,jmeter,Jmeter,在特定机器下运行JMeter测试时,该问题是可再现的。用户数为1。JMeter测试使用正则表达式排除某些域^((?!somerealdomain\.com)。*$。线程几乎立即关闭,jmeter日志中的错误为: 2018-09-03 15:53:12,596 ERROR o.a.j.JMeter: Uncaught exception: java.lang.StackOverflowError: null at org.apache.oro.text.regex.Perl5Matche

在特定机器下运行JMeter测试时,该问题是可再现的。用户数为1。JMeter测试使用正则表达式排除某些域
^((?!somerealdomain\.com)。*$
。线程几乎立即关闭,jmeter日志中的错误为:

2018-09-03 15:53:12,596 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.StackOverflowError: null
    at org.apache.oro.text.regex.Perl5Matcher.__match(Unknown Source) ~[oro-2.0.8.jar:?]
    at org.apache.oro.text.regex.Perl5Matcher.__match(Unknown Source) ~[oro-2.0.8.jar:?]
    at org.apache.oro.text.regex.Perl5Matcher.__match(Unknown Source) ~[oro-2.0.8.jar:?]
Perl5Matcher错误出现约1000次。 由于该问题仅在我们的3个性能代理中的一个上重现,我不确定是什么原因造成的。 所有计算机上的堆容量均为1GB:

HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
Java版本是所有三个代理的1.8.0µ


你知道去哪里找吗?

尝试将Xss设置为相同的值:

-Xss256k

另外,请显示以下文件的所有jmeter.log:

  • jmeter.log
  • jmeter-server.log

如果只有一台机器受到影响,这意味着它与其他机器不同,因此它产生的负载可能与您预期的不同,因此我将首先确定差异

  • 仔细检查负载生成器是否运行相同的操作系统
  • 仔细检查您的load Generator是否使用相同的JVM版本(最好来自Oracle,最好是JDK)供应商、体系结构、构建等
  • 仔细检查负载生成器是否使用相同(最好)的JMeter版本
  • 仔细检查load Generator是否具有相同的配置,最好的方法是根据设置一个节点,并将安装复制到所有从属计算机
  • 保存请求失败的响应数据,并验证所有从属服务器的响应数据是否相同,您可以通过向文件中添加以下两行来完成此操作:

  • 尝试修改正则表达式以将域排除为以下内容:

    • ^((?!somerealdomain)。*$

    • ^((?!somerealdomain.com)。*$


  • 我找到了解决办法。我在路径的开头添加了C:\Program Files\Java\jre1.8.0\u 181\bin;然后按照说明重新启动计算机

    导致我这样做的原因是,在我安装了最新的Java JRE 64位版本并运行了
    Java-version
    之后,消息是
    “Java不被识别为内部或外部命令”
    。奇怪的是,JMeter测试甚至已经开始在这台机器上执行了


    没有必要对另外两名特工这样做。谢谢大家的建议。

    -Xss256k对我的情况没有影响。谢谢你的建议。
    jmeter.save.saveservice.output_format=xml
    meter.save.saveservice.response_data=true