windows监控 CPU 内存 jmeter 使用 异常率 报错
今天在使用本地(Windows)Jmeter对远程服务器进行压力测试的时候,发现异常率非常的高,但是项目中日志没有报错误,然后观察TCP链接数排除了服务端的嫌疑,发现随着压测的进行,TCP连接数越来越少。打开日志输出发现报了大量的以下错误:
java.net.BindException: Address already in use: connect
1
百度后,原因为:
Windows 提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。
解决办法如下:
cmd中,用regedit命令打开注册表
第一步:增加动态分配到客户端 TCP/IP套接字连接的临时端口的上限。
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下:
右击parameters,添加一个新的DWORD,名字为MaxUserPort
然后双击MaxUserPort,输入数值数据为65534,基数选择十进制
第二步:降低客户端 TCP/IP 套接字连接的超时值(默认值为 240 秒)
在注册表中,浏览到并单击以下注册表项。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值,以缩短关闭连接时,该连接处于 TIME_WAIT 状态的时间。当连接处于 TIME_WAIT 状态时,套接字对无法重新使用:
右击parameters,添加一个新的DWORD,名字为TcpTimedWaitDelay
然后双击TcpTimedWaitDelay,输入数值数据为一个 30 到 240 之间的数字,基数选择十进制
重启电脑
完成以上步骤后,异常率大大降低。
原文链接:https://blog.csdn.net/qq_39240270/article/details/93633821