首页/系统/Linux 内核与性能调优速查/抓包文件离线分析流程
网络栈调优98 条

抓包文件离线分析流程

线上只负责采集, 分析放到离线: 用 tshark 统计与过滤能力定位重传、窗口与响应时间问题。

什么是抓包文件离线分析

排障时的正确分工是:线上只负责采集,尽可能小地影响业务;分析放到离线,用 tshark 与 capinfos 这类工具慢慢统计与过滤。离线分析的好处是可以反复回看、按条件切片、统计重传与响应时间分布。抓包本身要注意文件轮转与磁盘保护,否则一次长时间抓取可能把磁盘写满,把网络问题变成磁盘问题。

基本信息

采集tcpdump -i <if> -s 0 -C <MB> -W <数量> -w <文件> '<过滤表达式>'
轮转-C 按 MB 切分,-W 限定保留文件数
离线统计tshark -r <文件> -q -z io,stat,<间隔>
过滤分析tshark -r <文件> -Y '<显示过滤器>'
文件信息capinfos <文件>
注意抓包点的位置会影响时序判断

典型使用场景

  • 重传与丢包定位:统计重传率并下钻到具体连接
  • 响应时间分析:按流统计请求与响应的间隔分布
  • 协议行为确认:核对握手、选项与状态机是否符合预期
  • 跨团队协作:把抓包文件交给对端或网络团队复现问题
  • 事后复盘:故障已恢复但仍需还原当时的现场

采集与离线分析

采集与离线分析
# 线上采集:抓 8080 端口,按 100MB 轮转,最多留 5 个文件
tcpdump -i eth0 -s 0 -C 100 -W 5 -w /var/tmp/cap.pcap 'port 8080'
# 离线:先看文件概况(时间跨度、包数、是否有截断)
capinfos cap.pcap
# 每秒 IO 统计,定位流量与丢包的时间点
tshark -r cap.pcap -q -z io,stat,1
tshark -r cap.pcap -Y 'tcp.analysis.retransmission' | head
tshark -r cap.pcap -Y 'tcp.port==8080 && tcp.flags.reset==1' | head

常见分析视角

关注点过滤/统计方式用途
重传tcp.analysis.retransmission判断链路质量与丢包方向
重复确认tcp.analysis.duplicate_ack配合重传区分乱序与丢包
连接重置tcp.flags.reset==1定位被中断的连接来源
响应时间io,stat 或 TCP 流统计评估服务端处理与网络耗时占比
窗口变化tcp.window_size_value确认接收方是否在缩窗
网页与图像类流量会显著放大文件体积,采集时用精确过滤表达式限定端口或主机,能把同样的磁盘开销换成更长的时间覆盖。
在业务高峰无限制抓取会把磁盘写满;同时抓包点靠近主机的时刻不可靠(驱动 offload 会推迟时间戳),分析重传方向时要留意这一限制。

易错点

  • 在业务高峰无限制抓取,磁盘被写满,网络问题蔓延成磁盘与业务故障
  • 忽略抓包点一侧的时序误差(网卡 offload、驱动时间戳),误判重传方向与延迟归属
  • 抓包时忘记设置轮转与文件数上限,长时间抓取只剩最后一个文件,关键时间段的数据丢失
  • 离线分析前不看 capinfos,误把截断文件或空文件当成“没有问题”的证据

数据来源与参考

  • man tcpdump
  • Wireshark tshark 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌