如何解决大量JAVA客户端Socket关闭时TIME

 我来答
小七哥XQ001
2016-10-01 · TA获得超过182个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:231万
展开全部
IME_WAIT这个状态是TCP/IP设计时为考虑网络的可靠性所必须的,主动发起关闭连接的一方在接收到被动关闭连接方发出的FIN后就会进入TIME_WAIT状态,这个状态最长会持续2*MSL(Max Segment Life)时间,其作用是(1)主动方发出的ACK可能会在网络中丢失,如果丢失被动方会重新发出FIN,如果提前关闭了连接就无法接收到重发的FIN。(2)使游荡在网络中的分组在经过2*MSL超时后消失。 TIME_WAIT这个设计是为了网络可靠性的考虑,具体设定时间长短需要根据网络情况决定,超时时间Windows默认设置一般为四分钟,也就是说主动方打开的端口最长在四分钟内不会被释放,导致可用端口减少。 TIME_WAIT的默认等待时间操作系统设置一般都较为保守,如果网络连接中出现大量TIME_WAIT状态,可以考虑修改设置(1)修改操作系统配置减少TIME_WAIT时间,Windows上的设置方法是进入注册表的HKLM->SYSTEM->CurrentControlSet->services->TcpIp->Parameters,添加一个DWORD项“TcpTimedWaitDelay”,时间可设置的短一些(比如60秒或30秒)(2)使用Socket提供的SO_LINGER选项,当SoLinger设置为0时Socket会取消关闭连接等待(不建议)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式