一、问题现象
设备旁路部署,版本7.0.8R3,虚拟服务启用SNAT,用户访问虚拟服务的时候会有大致一分钟的等待时间,才能访问正常。
二、处理过程
通过抓取AD到业务的数据包分析发现,负载给服务器发送数据包,但服务器未回复,导致出现了大量的超时重传包。
三、根因
主要由于节点开启tcp_tw_recycle开关并且开启了SNAT的场景,由于每个客户端的时间戳都是不一样的,一旦有客户端断开连接,服务器就会丢弃那些时间戳比该连接时间戳小的SYN包,导致业务异常。在客户场景中出现在短时间内复用同一个源IP+源端口的情况,两次请求时间大于服务器的超时时间,导致服务器主动关闭连接并将第这条连接状态改变为TIME_WAIT状态,第二次请求到来的时候,AD无法复用这条连接导致无法应答客户端的第二次请求。
四、解决方案
方法一、在对应的虚拟服务中配置TCP优化策略,并勾选时间戳。
方法二、关闭服务器的时间戳校验机制,一般为tcp_tw_recycle字段。 |