这个问题很奇怪,linux端口分配会避免端口冲突的,然后检查服务器发现大量tcp连接处于CLOSE_WAIT状态,不过对应的是另外一个项目.
?...CLOSE_WAIT状态不会自己消失,除非对应的应用进程死掉,不会消失就意味着一直占用服务器资源,端口总数又只有65535,因此这里的服务器作为连接的发起者就会造成大量端口被占用,一旦占用完就导致后面的请求都发不出去...那么为什么HttpClient访问时端口会分配到CLOSE_WAIT对应的端口?...然后为什么TCP主动方关闭后需要等待2MLS?...因为TCP是可靠的通信,在主动方回复ACK时如果由于网络问题该包发送失败,那么被动方就会进行FIN重传,此时重传会遇到两个场景:
主动方已关闭,旧的TCP连接已经消失,那么系统只能回复RST包.