tcptimedwaitdelay和maxuserport设置

 

 

现象:Socket编程时的高并发访问在Windows上会报错,java.net.BindException: Address already in use: connect

原因:报错原因是socket的短连接关闭后会出现TIME_WAIT状态,这个状态在端口上多了的时候,那么这个端口就不允许再访问了。

可行的方式是将主机的TIME_WAIT参数的失效时间调低些。

解决方法:

    使用 regedit 命令访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。 将此值设置为十进制 30,其为十六进制 0x0000001e。该值将等待时间设置为 30 秒。 停止并重新启动系统。 缺省值:0xF0,它将等待时间设置为 240 秒(4 分钟)。 建议值:最小值为 0x1E,它将等待时间设置为 30 秒。 


MaxUserPort 描述:确定在应用程序从系统请求可用用户端口时,TCP/IP 可指定的最高端口号。 如何查看或设置: 使用 regedit 命令访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键并创建名为 MaxUserPort 的新 REG_DWORD 值。 停止并重新启动系统。 缺省值:无 建议值:至少十进制 32768。 

你可能感兴趣的:(性能测试)