解决Jmeter压测异常率过高的问题

今天在使用本地(Windows)Jmeter对远程服务器进行压力测试的时候,发现异常率非常的高,但是项目中日志没有报错误,然后观察TCP链接数排除了服务端的嫌疑,发现随着压测的进行,TCP连接数越来越少。打开日志输出发现报了大量的以下错误:

java.net.BindException: Address already in use: connect

百度后,原因为:
Windows 提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。
解决办法如下:

  1. cmd中,用regedit命令打开注册表

第一步:增加动态分配到客户端 TCP/IP 套接字连接的临时端口的上限。

  1. 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下:
    • 右击parameters,添加一个新的DWORD,名字为MaxUserPort
    • 然后双击MaxUserPort,输入数值数据为65534,基数选择十进制

第二步:降低客户端 TCP/IP 套接字连接的超时值(默认值为 240 秒)

  1. 在注册表中,浏览到并单击以下注册表项。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  2. 在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值,以缩短关闭连接时,该连接处于 TIME_WAIT 状态的时间。当连接处于 TIME_WAIT 状态时,套接字对无法重新使用:

    • 右击parameters,添加一个新的DWORD,名字为TcpTimedWaitDelay
    • 然后双击TcpTimedWaitDelay,输入数值数据为一个 30 到 240 之间的数字,基数选择十进制
  3. 重启电脑

完成以上步骤后,异常率大大降低。

发布了167 篇原创文章 · 获赞 230 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_39240270/article/details/93633821
今日推荐