1.问题描述
因业务需要与其他公司对接,服务A(我方)需要发送http请求去服务B(对接公司)下载文件,A服务中设置了http连接超时和socket超时都为5秒,连续2次发送下载请求,第一次下载成功(响应时间约20ms),第二次下载报socket timed out。
2.问题排查
2.1 tcpdump抓包
在A服务器上使用tcpdump抓包工具抓包,命令如下
tcpdump -i ens192 host 10.13.52.241 -w 251.cap
10.13.52.241
为B服务器地址,-w 251.cap
指将抓包数据保存到251.cap
文件
2.2 报文分析
使用wireshark打开251.cap
文件,能看到服务A和B的交互过程。
经分析,A与B使用http 1.1协议交互,TCP握手成功后,第一次报文响应完成;第二次直接连接复用,发送http报文后,服务B无响应导致超时。
最终需要对接公司的相关开发人员排查,服务B为何5秒内无响应。可能存在问题的地方包括但不限于业务代码有bug、网络问题、服务器问题。