并行下载嵌入式资源导致JMeter测试中的连接超时

时间:2018-06-19 13:53:33

标签: java testing jmeter openshift

我有一个JMeter测试设置,可以在20个页面上运行250个并发用户,并具有100到5000毫秒的均匀随机延迟。这些页面视图运行一定的循环次数。

当我在没有“检索所有嵌入式资源”或“并行下载”设置为1的情况下运行时,测试效果很好并且一切都很快。当我将并行下载设置为更高的数量(例如6)以进行浏览器仿真时,我最终开始在套接字上获得“连接重置”。

我可以通过tcp转储在网络上看到一些TCP重置数据包,但是我不确定它们是否来自JMeter或网络中的某个地方。

什么会导致网络拒绝来自JMeter的并行连接?在应用服务器中,一次只能看到几个连接。 JMeter对那些与HTTP套接字相关的并行连接进行特殊处理吗?

我们尝试使用HTTP4和Java连接类型,但无法弄清楚并行下载为何会导致问题。

我们得到的错误是这一错误,再加上一些连接重置错误:

Thread Name: Thread Group 1-10
Sample Start: 2018-06-14 11:45:47 CEST
Load time: 1956
Connect Time: 1956
Latency: 0
Size in bytes: 2497
Sent bytes:0
Headers size in bytes: 0
Body size in bytes: 2497
Sample Count: 1
Error Count: 1
Data type ("text"|"bin"|""): text
Response code: Non HTTP response code: java.net.SocketException
Response message: Non HTTP response message: Socket closed

1 个答案:

答案 0 :(得分:1)

  1. 您可能需要检查基础操作系统是否允许1500个以上的并发连接,因为它可能限于不超过1024个。
  2. 如果您完全确定自己的应用程序可以按预期运行并且问题出在其他地方,则可以尝试从Connection Reset since JMeter 2.10 ?文章中解决问题。
  3. 请注意,真正的浏览器会下载嵌入式资源并为此使用并行线程池,但是它们仅执行一次,这是在后续请求中从浏览器的缓存中返回这些嵌入式资源的。因此,如果您的目标是检查系统是否支持250个真实用户-您需要在测试计划中添加HTTP Cache Manager