现象:
[1]多线程启动频繁操作MSSQL,抛出
到主机 的 TCP/IP 连接失败。 java.net.BindException: Address already in use: connect
[2]在服务器上,执行netstat -a,可以看到很多TCP TIME_WAIT
很多端口被占用
类似下面的:
TCP 127.0.0.1:1025 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:1026 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:1027 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:1028 127.0.0.1:1433 TIME_WAIT
......
TCP 127.0.0.1:4998 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:4999 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:5000 127.0.0.1:1433 TIME_WAIT
开始,我跑2个线程都有问题,过一会程序就抛上面的异常。
我现在用了一个可行的方案,不是最好的方案。
两步操作:
[1]通过修改注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:
[1]多线程启动频繁操作MSSQL,抛出
到主机 的 TCP/IP 连接失败。 java.net.BindException: Address already in use: connect
[2]在服务器上,执行netstat -a,可以看到很多TCP TIME_WAIT
很多端口被占用
类似下面的:
TCP 127.0.0.1:1025 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:1026 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:1027 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:1028 127.0.0.1:1433 TIME_WAIT
......
TCP 127.0.0.1:4998 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:4999 127.0.0.1:1433 TIME_WAIT
TCP 127.0.0.1:5000 127.0.0.1:1433 TIME_WAIT
开始,我跑2个线程都有问题,过一会程序就抛上面的异常。
我现在用了一个可行的方案,不是最好的方案。
两步操作:
[1]通过修改注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters: