记录 TCP 队列满溢问题的故障排除过程-4.抓包数据分析
最编程
2024-07-09 14:59:39
...
情景1:服务A及服务B均有连接日志打印。
服务A端数据包分析:
09:51:43.966553000 服务A发起 GET请求的数据包如下:
图1:服务A发起GET请求
09:51:46.966653000 服务A发起 GET请求3s(即服务A设置的等待超时时长)后,因未收到服务B响应,服务A向服务B发起FIN主动断开连接。
图2:服务A等待超时主动断开连接
09:51:59.958195000 服务A发起http请求16s后收到服务B的http响应报文,因服务A已主动关闭该连接,故直接回复RST。
图3: 服务B16s后响应
服务B端数据包分析:
09:51:44.062095000 服务B收到服务A发送的http请求包。
图4:服务B收到服务A的请求
09:51:59.936169000 服务B响应服务A,服务B从接收到http请求报文至响应http请求总用时约为15s多,但服务B打印的日志响应时长约为0.165s。
图5:服务B15S后响应
图6:服务B日志显示响应时间0.165s
情景2:服务A有连接日志,服务B无连接日志。
服务A端数据包分析:
09:51:43.973791000 服务A向服务B发送一个http请求数据包,随后收到服务B重传的第二次握手的syn+ack包,超过3s未收到服务B的http响应后断开连接。
图7:服务B重传syn+ack
服务B端数据包分析:
服务B重传了第二次握手的syn+ack包,收到服务A的http请求,服务B忽略,未响应,服务A等待超时后断开了连接。
图8: 服务B忽略服务A请求