
高并发中负载均衡器临时端口耗尽问题
https://www.maideliang.com/index.php/archives/48/
1. 对于tcp请求来说,tcp的客户端服务端概念和http的不同,请求双方,哪边关闭请求,哪边就是tcp客户端,另一边就为服务端。
2、tcp的一个链接由4个值确定,源ip、源端口、目标ip、目标地址。
tcp状态图中有一个TIME_WAIT状态,也叫2MSL状态,该状态是为了保证在tcp客户端发给tcp服务端最后一个ACK能顺利到达的一个等待状态。若没有TIME_WAIT状态,tcp客户端将直接进入CLOSED 状态,但有时由于网络原因,ACK 响应丢失,tcp服务端收不到 ACK,将重发FIN,CLOSED 状态的tcp客户端将返回RST ,而不是ACK。将导致tcp服务器异常。
也就是为了这个原因,tcp的客户端将会把连接保留在2MSL状态一段较长的时间。在这段时间里等待重发的FIN。这里需要注意的是,在2MSL状态的连接是不可以被重新使用。
那么什么是2MSL状态呢?
请看下图,这是关于TCP关闭连接时的握手序列:


上边TCP状态图中有一个TIME_WAIT

本文探讨了在高并发场景中,HAProxy作为负载均衡器可能遇到的TCP源端口耗尽问题,解释了TIME_WAIT状态的作用,并提供了端口复用、配置优化和网络故障排查的策略。同时提及了相关技术文章和实例,帮助读者理解和应对类似挑战。

482

被折叠的 条评论
为什么被折叠?



