Read Timed out异常
Read Timed out异常
在对接某个项目的SDK时,发现隔一段,请求第三方服务时,老是出现"Read Timed out"异常,看代码没有发现问题,初步怀疑是长连接导致的,于是想通过抓包来看看日志
1、使用tcpdump来抓包
tcpdump tcp port xxx -s 0 -w capture.pcap &
指定端口号xxx
, -s 0
输出详细信息, -w capture.pcap
将日志保存到capture.pcap文件中,&
后台运行
2、下载capture.pcap
sz capture.pcap
3、使用wireShark
解析capture.pcap
文件
打开时可能会提示The capture file appears to have been cut short in the middle of a packet
,这是因为日志在一般被截断了(如果不是截断到要监控的日志,就没什么关系)
这里打开后,时间格式也许不是我们想要的,点击视图``时间显示格式
选择日期和时间(1970-01-01 01:02:03.123456)
4、根据服务器日志得知在2023-04-07 15:45:58秒接口发生了Read timed out
异常
在wireShark中找到相关的日志
选择1154这条记录
可以看到并没有响应体,正常的请求会显示Response in frame: 1157
,1157
就是日志No
正常的请求
右键请求异常的日志,点击 选择 追踪流
,选择TCP或者HTTP
根据自己实际业务选择,同时会弹出详细的请求信息
在请求头里看到了keep-alive,说明开启了长连接
HTTP/1.1会默认开启长连接,可在请求头添加
Connection
:Close
来关闭
https://zhuanlan.zhihu.com/p/34052073
至此 怀疑就是因为长连接导致的,由于第三方不愿意配合优化,所以在header中添加 Connection:Close,采用短链接,后续在观察
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~