如何从抓包文件中分析慢请求
请求慢的原因很多,当出现前端反应接口慢时,而通过后端日志查看请求处理时间并不慢时,往往会手足无措,当面对网络问题出现手足无措时,这就是在提醒你该抓包分析了,那么一般如何根据抓包文件去分析慢请求呢,今天我们就来看看。
抓包文件分析#
准备用我在测试环境抓到的包去进行分析,首先执行抓包命令。
sudo tcpdump -i lo port 6310 -w http.pcap
-w 命令能让我在服务器上抓到的包保留到 http.pcap 文件里,然后我将这个文件从服务器上dump下来,用wireshark去进行分析。
tcp delta time#
首先来看看对于tcp 包和延迟相关的属性。
follow 一个tcp 流
有关tcp time的时间信息在协议的传输层,点击查看可以发现有两个列,分别是
[Time since first frame in this TCP stream: 0.036151000 seconds]
[Time since previous frame in this TCP stream: 0.032279000 seconds]
Time since first frame 代表在该tcp流中,这个tcp包距离第一个tcp包相隔多少时间。
Time since previous frame 代表这个tcp包距离上一个tcp包相隔多少时间。
我们还可以将Time since previous frame 设置为自定义列,然后按这个时间排序就可以找出从传输层的角度延迟比较大的包了。
操作如下:
因为默认wireshark会解析http协议,这不便于我们单独的查看传输层的tcp包,所以把http协议的解析先关闭下。
接着将Time since previous frame 设置为自定义列,并对其进行排序
这样便可以找出是哪个tcp包延迟过大,进而可以针对它做具体的分析。
http time#
除了在传输层的针对tcp的延迟分析,同样可以针对应用层做延迟分析,通过http.time 可以得到慢http请求信息。
这样便能在抓包文件中一下定位到慢http请求,我们甚至可以保存这个过滤器,以便下次抓不同包的时候能直接应用上这个过滤器,像下面这样操作
bad Tcp#
无论是http time 还是tcp delta time 都是发现延迟的利器,但要弄清楚究竟为什么发生延迟,还需要从tcp的行为去分析原因。
在wireshark中异常的数据包可以通过tcp.analysis.flags 过滤器去筛选出来。
它可以筛选出异常的tcp数据包,比如重传,duplicated Ack ,找到异常数据包以后便可以快速的根据异常包的上下文去分析异常的原因了。
总结#
🔥🔥性能优化,服务监控方面的知识往往涉及量广且比较零散,我会持续输出这方面的内容,将这部分知识整理成册,愿以后性能排查不再抓瞎。
作者:蓝胖子的编程梦
出处:https://www.cnblogs.com/hobbybear/p/17460270.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性