Web服务器如何避免TIME_WAIT?

Dou*_*ugN 10 sockets tcp http winsock

我正在编写一个简单的HTTP服务器并学习TIME_WAIT.在处理请求后,如果没有所有套接字卡在TIME_WAIT中,那么繁重环境中的真实Web服务器如何处理来自数千个用户的请求?(不询问保持活着 - 这对单个客户有用,但对于成千上万的不同客户来说却没有帮助).

我已经读过你尝试让客户端先关闭,这样所有的TIME_WAIT都会在所有客户端之间传播,而不是集中在服务器上.

这是怎么做到的?在某些时候,服务器必须调用close/closesocket.

Len*_*ate 13

启动主动关闭的对等方是进入TIME_WAIT的对等方.因此,只要客户端关闭连接,客户端就会获得TIME_WAIT而不是服务器.我在这篇博客文章中详细介绍了这一切.

  • 如果您重置连接而不是关闭它,那么您也不会在TIME_WAIT中结束.因此,如果您想为空闲连接添加超时,请先关闭它们然后发出关闭来关闭它们.这将发送一个RST,你不会在TIME_WAIT结束. (3认同)