load-testing - JMeter:运行“许多”线程时出现 javax.net.ssl.SSLException
问题描述
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
- 爪哇 8
- JMeter 5.0
解决方案
- 首先确保检查您的应用程序日志,因为它可能表明被测系统存在问题。如果您确定您的应用程序运行良好,您可以考虑遵循JMeterSocketClosed wiki 页面中的建议
If I run 1000 threads on a single slave node (still executed from the master node), I get no errors.
- 检查吞吐量(每秒的命中数),因为单个节点可能缺乏资源并且无法足够快地发送请求,并且当您在分布式模式下运行 900 个线程时,您会执行更高的吞吐量。要检查的图表是每秒事务数和每秒服务器命中数I would expect a java.lang.OutOfMemoryError exception if the slave node(s) itself couldn't run this many threads.
- 不一定,JMeter 只是因为垃圾收集过多而执行请求更慢- 考虑升级到JMeter 5.3 (或JMeter 下载页面上提供的最新稳定版本),因为您可能遇到已修复的 JMeter 问题,根据 JMeter 最佳实践,您应该始终使用最新版本的 JMeter
推荐阅读
- r - diff() 函数返回一个空对象
- google-drive-api - 使用 Client_Secret.JSON 文件连接到 google 电子表格 API 时出现 403 Permission Denied 错误
- angular - 放置响应后更改 ngModel 值
- netflix-zuul - 如何检查 netflix zuul 正在将请求重定向到适当的服务
- kubernetes - 为什么这种在 kubernetes (GKE) 上使用轮廓的设置会产生 2 个正常工作的外部 IP?
- r - Shiny R:通过两个变量过滤数据框并运行模型
- php - 未捕获的错误:调用未定义的方法 mysqli_stmt::get_result()
- ios - swift4:UITableViewHeight 内容高度获取表格的固定高度
- c# - EF Core 条件(添加)包含到 IQueryable
- c++ - 模板没有在 C++ 中为函数模板命名类型错误