从字面上来说:地址已经被用光了。
那么究竟是什么地址被用光了呢?
原来啊:
-
windows系统为了保护本机,限制了其他机器到本机的连接数.
-
TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。减少此条目的值允许 TCP/IP 更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于 TIME_WAIT 中存在很多连接,导致低吞吐量,则调整此参数。
根据以上两条,那么进行压力测试时,如果不调整这俩参数,则必然会出现地址不够用的情况,所以才爆出了Address already in use: connect这个异常.
怎么解决?
增加链接数:
1、cmd中,用regedit打开注册表
2、在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下
1)右击parameters,添加一个新的DWORD,名字为MaxUserPort
2)然后双击MaxUserPort,输入数值数据为65534,基数选择十进制。
减少time_wait时间:
使用 regedit 命令访问 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。 将此值设置为十进制 30,其为十六进制 0x0000001e。该值将等待时间设置为 30 秒。 停止并重新启动系统。 缺省值:0xF0,它将等待时间设置为 240 秒(4 分钟)