JMeter:运行“许多”线程时出现 javax.net.ssl.SSLException
Posted
技术标签:
【中文标题】JMeter:运行“许多”线程时出现 javax.net.ssl.SSLException【英文标题】:JMeter: javax.net.ssl.SSLException when running 'many' threads 【发布时间】:2020-09-16 18:12:37 【问题描述】:timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1600278792845,6688,Category page,Non HTTP response code: javax.net.ssl.SSLException,Non HTTP response message: Connection reset,10.0.4.22-Thread Group 1-1619,text,false,Test failed: code expected to match /200/,3985,0,1830,1830,https://<my-test-url>,0,0,148
我正在从具有三个从节点的主节点运行我的 JMeter 测试。当使用“低”数量的线程(即~200)时,测试运行没有任何错误。但是,如果我将线程数增加到 ~300,我开始在我的 .jtl 文件中收到上述错误消息。什么意思?
如果我在单个从节点上运行 1000 个线程(仍从主节点执行),则不会出现错误。
一些想法:
如果从属服务器会出现java.lang.OutOfMemoryError
异常
节点本身无法运行这么多线程。
测试是在 Azure 环境中执行的,因此我不认为这是网络问题之类的,因为 Azure 应该能够处理这么多的流量
系统信息:
Ubuntu 18.04 在所有机器上 Java 8 JMeter 5.0【问题讨论】:
【参考方案1】:-
首先确保检查您的应用程序日志,因为它可能表明被测系统存在问题。如果您确定您的应用程序运行良好,您可以考虑遵循 JMeterSocketClosed wiki 页面中的建议
If I run 1000 threads on a single slave node (still executed from the master node), I get no errors.
- 检查吞吐量(每秒的命中数),因为单个节点可能缺乏资源并且无法足够快地发送请求,并且当您在分布式模式下运行 900 个线程时,您会执行更高的吞吐量。要检查的图表是 Transactions per Second 和 Server Hits per Second
I would expect a java.lang.OutOfMemoryError exception if the slave node(s) itself couldn't run this many threads.
- 不一定,JMeter 可以因为过多的请求而更慢地执行请求 garbage collection
考虑升级到JMeter 5.3(或JMeter Downloads 页面上提供的任何最新稳定版本),因为您可能遇到已修复的JMeter 问题as per JMeter Best Practices you should always be using the latest version of JMeter
【讨论】:
以上是关于JMeter:运行“许多”线程时出现 javax.net.ssl.SSLException的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在运行 mvn clean install 时出现 errorRebind 结果“javax.validation.ValidatorFactory”必须是一个类?
JMeter 非 HTTP 响应代码:在 Kubernetes 上运行时出现 java.net.UnknownHostException
javax.net.ssl.SSLHandshakeException 通过 Cajo over SSL 连接时出现问题
jaxb 编组时出现 javax.xml.bind.PropertyException
在 Tomcat 上实现 Jersey 时出现“javax.servlet.ServletException: java.lang.NoClassDefFoundError”