当前位置: 首页 > 知识库问答 >
问题:

JMeter-windows 7中负载测试超过120个线程时发生连接重置和SSL错误

洪越泽
2023-03-14

我正在尝试从Windows7/10加载带有最新JMeter3.3的测试网站

当线程达到120或以上时,我开始从F5获得SSL握手失败。

当我添加-Djavax.net.debug=all到执行中时,我发现了许多不同的套接字异常:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.security.ssl.InputRecord.readFully(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)

或者

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.security.ssl.InputRecord.readFully(Unknown Source)
at sun.security.ssl.InputRecord.read(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)

或者

 java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at sun.security.ssl.OutputRecord.writeBuffer(Unknown Source)
at sun.security.ssl.OutputRecord.write(Unknown Source)

我遵循答案,但可能已经过时了:

确保您的HTTP请求“实现”为HTTPClient4,并向用户添加以下行。属性文件(位于JMeter主页的/bin文件夹中)

httpclient4。retrycount=1 hc。参数。file=hc。hc中的参数。参数文件(相同位置-JMeter的/bin文件夹)取消注释下一行:

http.connection.stalecheck布尔值

如何防止这些错误?我试着调整加速期,但没用。我还尝试添加此处建议的EnableConnectionRateLimiting注册表,但失败。

我是否在窗口上达到了JMeter的限制,或者它可以被配置/增加?

编辑

我尝试用不同的重试次数和Java实现设置HTTP,但没有改变。

编辑2

我发现为我的HTTP请求使用特定的TLSv1.2协议修复了这个问题,jmeter.properties添加一行:

https.socket.protocols=TLSv1.2

增强了超文本传输协议参数的可配置性。

这使我能够将负载增加到~220个线程,而不会在斜坡上升期间出现SSL握手错误。

共有1个答案

楚嘉
2023-03-14

您可能需要调整windows tcp设置以避免达到打开的端口限制。

见此:

  • https://www.filehold.com/help/technical/Windows-Server-Tuning-to-Prevent-TCPIP-Port-Exhaustion

您需要设置:

>

  • HKEY_LOCAL_MACHINE\SYSTEM\MONtControlSet\Services\Tcpip\Parameters\MaxUserPorthttp://technet.microsoft.com/en-us/library/aa995661.aspx
  • HKEY_LOCAL_MACHINE\SYSTEM\MONtControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelayhttp://technet.microsoft.com/en-us/library/bb397379.aspxWindows 2003通过将Windows注册表键上的TcpTimedWaitDelay TCP/IP参数设置为30秒来减少TIME_WAIT

    HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,作为DWORD值。通过将windows注册表项HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters上的MaxUserPort TCP/IP参数设置为更高的值(如32768),以DWORD值的形式增加临时端口的范围。这将设置从1024到32768的端口范围。

    Windows 2008 R2通过将Windows注册表项HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters上的TcpTimedWaitDelay TCP/IP参数设置为30秒(作为DWORD值),减少等待时间。通过命令netsh int ipv4 set dynamicportrange tcp start=32767 num=65535将dynamicportrange设置为更高的值,增加临时端口的范围,这将把端口范围从32768设置为65535。

  •  类似资料:
    • 我们在JMeter远程测试中面临问题。Master被困在: 正在端口4445上等待可能的Shutdown/StopTestNow/Heapdump消息 当客户抛出时: 连接被拒绝到主机异常 我们正在运行如下大师: 但是在从属端测试完成状态被发送到其他一些IP地址: 仅供参考:这台机器上运行了docker,并且10.0.75.1与它相关联

    • 我们目前对应用程序的负载测试是使用jMeter完成的,到目前为止运行良好。我们有三个不同的线程组,可以通过命令行标志分别启用和配置。还可以从命令行配置线程数和目标吞吐量。 我正在寻找的是为每个线程组编程负载场景的可能性。通常jMeter启动所有线程,然后尝试达到其目标吞吐量速率。我想要实现的如下:我配置目标吞吐量速率为每秒500个请求,启动速率为20,增量为20,持续时间为5分钟。jMeter应该

    • 我试图用下面的连接字符串连接到SQL服务器,但它给出了这个"错误连接超时过期" 我已尝试telnet,并且它已成功连接。但是,根据代码,即使我尝试指定默认端口,也无法连接。 我有做错什么吗?提前谢谢你。 Telnet结果

    • 我试图将我的Spring Boot应用程序连接到PostGresSql数据库。但每次我得到错误。 我的文件如下所示:- ssl服务器。jks文件位于src/main/resources文件夹中。我正在阅读下面的控制台台面:-

    • 在尝试在不同的机器上使用主配置和从配置运行jmeter分发测试时,我们面临着这个问题。Jmeter分布测试在同一台机器上运行良好,但我们得到的连接拒绝主机:xxx.xxx.xxx。xx;嵌套异常是:java.net。ConnectException:连接超时:connect无法配置xxx.xxx.xxxxxx

    • 我想用Jmeter和bitbucket服务器负载测试下面的场景。 通过jmeter对bitbucket服务器负载测试git克隆和git更新操作。 最初将有20个用户向bitbucket服务器发出克隆请求,20个用户向bitbucket服务器发出git更新请求。 在jmeter中为测试配置了多个git repo和多个用户。 由于这些都是非浏览器操作(git克隆操作),我不知道如何提取准确的url击中