默认操作系统超时为120秒,之后这些连接应该消失,但这种情况永远不会发生.即使在始发过程长期终止之后,这些连接仍然存在并且永远不会被清除(在该过程被杀死后两天我们仍处于16k连接).操作系统应该将它们计时,但事实并非如此.
有没有其他人看到过这种行为,如果有的话,做了什么来解决它.我们知道如何调整tcp堆栈以缩短超时或允许更多连接,但这不是问题.
谢谢!
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.