温馨提示×

debian用dumpcap卡顿为何

小樊
50
2026-09-21 22:50:11
栏目: 智能运维

在 Debian 上使用 dumpcap 抓包出现“卡顿”,通常不是 dumpcap 本身慢,而是捕获/写入/系统资源/权限某一环出了问题。下面按最常见原因给你梳理,并给出对应排查与解决办法。


一、最常见原因

1️⃣ dumpcap 没有足够权限(最常见)

dumpcap 需要直接访问网卡,如果权限不足:

  • 会频繁重试
  • 出现卡顿、丢包、启动慢

检查:

getcap /usr/bin/dumpcap

正常应看到:

/usr/bin/dumpcap = cap_net_raw,cap_net_admin+eip

修复:

sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap

2️⃣ 磁盘写入慢(抓包写文件卡)

dumpcap 默认写 .pcap,如果你在:

  • 机械盘
  • NFS / 网络盘
  • 慢 USB 盘

会严重卡顿。

建议:

  • 写到本地 SSD
  • 使用 -B(buffer size)增大缓存
dumpcap -i eth0 -w /tmp/test.pcap -B 16

3️⃣ 网卡流量太大, buffer 太小

默认内核 socket buffer 很小,高流量直接丢包 + 卡顿。

查看是否丢包:

dumpcap -i eth0

或

cat /proc/net/dev

解决:

sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.rmem_default=26214400

dumpcap 也可指定:

dumpcap -i eth0 -w out.pcap -B 32

4️⃣ 使用虚拟化 / 云服务器(virtio 网卡)

在:

  • KVM
  • OpenStack
  • 某些 VPS

virtio 网卡抓包会:

  • 延迟高
  • CPU 占用异常

现象:

  • tcpdump 正常
  • dumpcap 卡

解决:

  • 降低抓包速率
  • 使用 tshark 而非 GUI
  • 避免在虚拟网卡上全量抓包

5️⃣ 使用了 display filter(不该用)

dumpcap 不支持 display filter(-Y 是 tshark 的)

错误示例:

dumpcap -i eth0 -Y "tcp.port==80"   # ❌

✅ 正确:

dumpcap -i eth0 -f "tcp port 80" -w out.pcap

6️⃣ CPU 被中断打满

top

如果 si(softirq)很高:

优化:

sudo ethtool -L eth0 combined 4

或多队列网卡 + RSS


二、推荐的稳定用法示例

sudo dumpcap \
  -i eth0 \
  -f "tcp port 80" \
  -w /tmp/cap.pcap \
  -B 32 \
  -s 96

说明:

  • -s 96:只抓包头,极大降负载
  • -B 32:增大缓冲
  • 本地磁盘

三、快速自检清单 ✅

  • [ ] dumpcap 有 cap_net_raw
  • [ ] 抓到本地磁盘
  • [ ] 没用 display filter
  • [ ] buffer 已加大
  • [ ] 非虚拟网卡全量抓包

如果你愿意,可以贴:

  • Debian 版本
  • 网卡类型
  • 抓包命令
  • top / ethtool -i eth0

我可以帮你精确定位是哪一类卡顿。

0 踩