假设有一个客户端与服务器建立了很多短期连接。
如果客户端关闭连接,客户端会有很多端口处于TIME_WAIT
状态。由于客户端用完了本地端口,因此无法快速进行新的连接尝试。
如果服务器关闭连接,我会TIME_WAIT
在服务器端看到很多s。然而,这有什么害处吗?客户端(或其他客户端)可以继续尝试连接,因为它永远不会用完本地端口,并且TIME_WAIT
服务器端的状态数量会增加。最终会发生什么?有什么不好的事情发生吗?(减速、崩溃、连接断开等)
请注意,我的问题不是“目的是TIME_WAIT
什么?” 但是“如果TIME_WAIT
服务器上有这么多状态会发生什么?” 我已经知道在 TCP/IP 中关闭连接时会发生什么以及为什么TIME_WAIT
需要状态。我不是想解决它,只是想知道它的潜在问题是什么。
简单地说,让我们说netstat -nat | grep :8080 | grep TIME_WAIT | wc -l
prints 100000
。会发生什么?操作系统的网络堆栈会变慢吗?“打开的文件太多”错误?或者,只是没有什么可担心的?