问题现象
对方系统上出现大量处于CLOSE_WAIT状态的连接,耗尽对方系统设置的连接数上限,致使我方系统再去连接对方系统报错。
问题解析
查询问题原因是由于我方向其发送请求报文未在限定时间内收到响应,于是close掉了连接。但是对方仍然在等待第三方的回应,没有对我方的close动作做出回应(也应该close掉这个链接)。
由上图可以看出,发生问题时,我方处于FIN_WAIT_2状态,等待tcp_fin_timeout时间后会使该连接彻底关闭处于CLOSED状态。但是对方如果不进行close则会一直CLOSE_WAIT状态。
问题总结
直接原因:两个系统设置的超时时间存在差异,且它们等待外部系统的超时时间更长导致。
根本原因:设计阶段没有对网络异常做出充分考虑