从 Windows Server 执行 Web 应用程序性能测试的网络设置

从 Windows Server 执行 Web 应用程序性能测试的网络设置

Web 应用程序需要从Windows Server 2012 R2机器上进行测试。性能测试在 300-400 个线程上执行JMeter 5.3。在测试执行期间,JMeter 中出现以下错误,测试运行 20 秒后每秒出现 1-2 个错误:

响应代码:非 HTTP 响应代码:java.net.SocketException 响应消息:非 HTTP 响应消息:连接重置

我搜索了有关此错误的信息,发现它可能是由于设置了可以同时打开的最大 TCP 连接数而导致的。输出Get-Item 'HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters'

                           UseDomainNameDevolution      : 1
                           EnableICMPRedirect           : 1
                           DeadGWDetectDefault          : 1
                           DontAddDefaultGatewayDefault : 0
                           KeepAliveTime                : 900000
                           KeepAliveInterval            : 10000
                           NV Domain                    : m53.local
                           ShutDownTimeAtLastDomainJoin : {11, 189, 171, 150...}
                           (default)                    :
                           TcpTimedWaitDelay            : 60
                           MaxUserPort                  : 65534
                           TcpNumConnections            : 16777214
                           TcpMaxDataRetransmissions    : 10

TCP 池的大小似乎足够了,系统有 16 GB RAM 内存。我该如何优化系统以进行性能测试?

答案1

  1. 此“连接重置”可能是由测试系统引起的,因此我将从检查其日志开始。

  2. 如果你确信这是 JMeter 的问题,你可以考虑以下建议JMeterSocket关闭维基页面

  3. 您可能希望减少 TcpTimedWaitDelay,30以便临时端口可以更快地回收

  4. 你可能想要添加javax.net.debug=all线系统属性文件来查看底层发生了什么

  5. 你可能想要增加 JMeter 日志记录详细程度对于 HTTP 协议,请将以下几行添加到log4j2.xml文件:

    <Logger name="org.apache.http" level="debug" />
    <Logger name="org.apache.http.wire" level="debug" />
    
  6. 最后,有些人表示,改变HTTP 请求到 Java 的实现有帮助,作为最后的手段,你可以使用 HTTP 请求默认值来切换它:

    在此处输入图片描述

相关内容