在特定计算机上运行JMeter测试时,该问题可重现。用户数量为1。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:?]
。线程几乎立即关闭,jmeter日志中的错误是:
HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
Perl5Matcher错误大约出现1000次。 由于此问题只能在我们的3个性能代理中的一个上再现,因此我不确定是什么原因引起的。 所有机器上的堆都是1GB:
this.weld = new Weld();
Java版本是1.8.0_181的所有三个代理。
您对哪里看有想法吗?
答案 0 :(得分:1)
在任何地方尝试将Xss设置为相同的值:
-Xss256k
还请显示以下所有的jmeter.log:
答案 1 :(得分:1)
如果仅一台计算机受到影响,则意味着它与其他计算机不同,因此它可能产生与您期望的负载不同的负载,因此我将首先确定差异。
保存失败请求的响应数据,并验证所有从站的响应数据是否相同,您可以通过在user.properties文件中添加以下两行来实现此目的:
jmeter.save.saveservice.output_format=xml
meter.save.saveservice.response_data=true
尝试修改正则表达式以将域排除为类似内容:
^((?!somerealdomain).)*$
或
^((?!somerealdomain.com).)*$
答案 2 :(得分:0)
我找到了解决方案。我将添加到PATH C的开头:\ Program Files \ Java \ jre1.8.0_181 \ bin;然后按照说明here重新启动计算机。
导致我这样做的原因是,在我安装了最新的Java JRE 64位版本并运行java -version
之后,消息为"Java is not recognized as an internal or external command"
。奇怪的是,JMeter测试甚至已经开始在此计算机上执行。
其他两个代理都不需要这样做。谢谢大家的建议。