Windows 2008 Server SP2 64位 – 在TIME_WAIT之后,TCP连接永远不会释放

我们遇到 Windows 2008 Datacenter版SP2 64bit的问题.我们有一个非常频繁地轮询并建立新的TCP连接的进程.系统处于TIME_WAIT状态下超过16k连接的状态.
认操作系统超时为120秒,之后这些连接应该消失,但这种情况永远不会发生.即使在始发过程长期终止之后,这些连接仍然存在并且永远不会被清除(在该过程被杀死后两天我们仍处于16k连接).操作系统应该将它们计时,但事实并非如此.

有没有其他人看到过这种行为,如果有的话,做了什么来解决它.我们知道如何调整tcp堆栈以缩短超时或允许更多连接,但这不是问题.

谢谢!

亚马逊EC2有一个主要问题.他们最近修复了这个bug.也许同样的问题适用于您的情况?

Hi,I am pasting below an explanation of what was causing this issue. Good news is that this has been fixed very recently by our engineering team. To get fix,all you’ll have to do is STOP/START the Windows Server 2008 instances where you are seeing this issue. Again,I am not talking about REBOOT which is different. STOP/START causes the instance to move to a different (healthy) host. When these instances launch again,they will be running on hosts that have the fix in place so they won’t have this issue again. Now below is the engineering explanation of this issue. After an in depth investigation,we’ve found that when running Windows 2008 x64 on most available instance types,we’ve identified an issue which may result in TCP connections that remain in TIME_WAIT/CLOSE_WAIT for excessively long periods of time (in some cases,remaining in this state indefinitely). While in these states,the particular socket pairs remain unusable and if enough accumulate,will result in port exhaustion for the ports in question. If this particular circumstance occurs,the only solution to clear the socket pairs in question is to reboot the instance in question. We have determined the cause to be the values produced by a timer function in Windows 2008 kernel API which,on many of our 64-bit platforms,will occasionally retrieve a value that is extremely far in the future. This affects the TCP stack by causing the timestamps on the TCP socket pairs to be stamped significantly far in the future. According to Microsoft,there is a stored cumulative counter which will not be updated unless the value produced by this API call is larger than the cumulative value. The ultimate result is that sockets created after this point will all be stamped too far in the future until that future time is reached. In some cases,we have seen this value several hundred days into the future,thus the socket pairs appear to be stuck forever.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...