Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

性能

Wireshark 的性能问题通常出现在两个场景:打开和分析大型抓包文件很慢,或者正在抓包时出现 packet drops。

处理性能问题时,先判断是“离线分析慢”还是“现场捕获丢包”,两者的优化方向不同。

场景一:大型抓包文件变慢

常见症状

  • 打开大文件很慢。
  • 应用显示过滤器很慢。
  • 滚动数据包列表卡顿。
  • 切换协议树或重组流时响应慢。

主要原因

大型抓包文件会增加磁盘读取、协议解析、显示过滤、着色规则和界面渲染的压力。超过 100 MB 的文件在部分机器上就可能明显变慢。

优先动作

动作作用
关闭 Coloring Rules减少每个数据包的着色匹配开销
关闭 Name Resolution避免 DNS、传输层名称解析带来的等待
减少不必要的协议重组降低内存和解析成本
使用更具体的显示过滤器缩小当前关注范围
必要时切分抓包文件降低单次加载的数据量

常见候选首选项:

  • IP/Reassembled fragmented IP datagrams
  • TCP/Allow subdissectors to reassemble TCP streams

关闭这些选项可能提升性能,但也可能影响某些协议的正确解析。修改前后应对比同一过滤条件下的数据包数量和解析结果。

简化性能链路

text
磁盘读取 -> 协议解析 -> 显示过滤 / 着色规则 -> 界面显示

如果以上优化仍无效,通常需要更多内存、更快 CPU 或更合理的文件拆分方式。协议解析主要是单任务处理,多核 CPU 不一定能线性提升单个文件的解析速度。

场景二:抓包时出现 packet drops

常见症状

抓包完成后,Wireshark 状态栏或统计信息提示有 packet drops。这表示并非所有到达网卡的数据包都被成功保存到抓包文件中。

主要原因

机器处理传入数据包的速度跟不上链路上的包速率,导致内核、驱动、抓包库或写盘环节丢包。

优先动作

动作作用
关闭其他占用资源的程序降低 CPU、内存和磁盘压力
用 dumpcap/tcpdump 专门抓包减少 GUI 处理开销
增大 capture buffer提高短时间突发流量承受能力
关闭实时更新数据包列表减少界面刷新开销
使用更快磁盘或本地磁盘降低写入瓶颈
合理设置 snap length减少每个数据包保存大小

抓包链路

text
网卡 -> libpcap/Npcap -> 抓包工具 -> 磁盘

其中可能的瓶颈包括:网卡驱动、内核抓包缓冲区、libpcap/Npcap、抓包工具本身和磁盘写入速度。

关于抓包过滤器的取舍

抓包过滤器会增加匹配成本,但如果它能在写入前丢弃大量无关数据,整体上可能反而降低压力。在支持内核级 BPF/JIT 的系统上,过滤开销通常更低。

使用原则:

  • 不确定要抓什么时,避免过早过滤。
  • 明确只关心某类流量时,可以使用抓包过滤器减少文件大小和写盘压力。
  • 生产故障排查中,避免因为过滤过窄丢失上下文。

相关页面

  • CaptureSetup:抓包环境和路径设置
  • CaptureFilters:抓包前过滤
  • DisplayFilters:抓包后筛选显示
  • PacketSlicing:限制单包保存长度
  • Preferences:影响解析和显示性能的首选项

Imported from https://wiki.wireshark.org/Performance on 2020-08-11 23:17:53 UTC

相关 Wireshark Wiki 页面

网络分析技术档案