有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

当我运行时没有检索所有嵌入式资源,或者并行下载设置为1,测试效果很好,一切都很快。当我将并行下载设置为更高的数字(如6)以进行浏览器模拟时,我最终开始在socket上重置连接

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

什么会导致网络拒绝JMeter的并行连接?在应用服务器中,我们一次只能看到几个连接。当JMeter与HTTPsocket相关时,它对这些并行连接有什么特殊的功能吗

我们已经尝试了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) 个答案

  1. # 1 楼答案

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