温馨提示×

Linux dropped如何测试

小樊
35
2025-12-05 23:41:30
栏目: 智能运维

Linux dropped 测试与定位实操指南

一、快速判断是否有丢包

  • 连通性基线测试:使用 ping 检测端到端丢包与抖动。示例:ping -c 100 -i 0.2 <目标IP或域名>,关注输出中的 packet loss%。持续大于 0% 需要进一步定位。
  • 路径逐跳定位:用 traceroute 或更佳的 mtr 查看每一跳的丢包与时延。示例:mtr -n --report --report-cycles 100 <目标>;实时模式:mtr <目标>。若某一跳开始丢包、其后恢复正常,常见于中间设备限速或策略丢弃。
  • 实时流量观察:用 iftop -i <接口> 观察是否有异常带宽占用或突发流量,辅助判断是否为拥塞导致的丢包。

二、查看接口层 dropped 计数

  • 查看网卡总体统计:
    • ip -s link show <iface>(如 eth0),关注 RX/TX dropped、errors、overruns
    • cat /proc/net/devnetstat -I <iface>,查看 RX-DRP/RX-OVR 等字段。
  • 解读要点:
    • RX-DRP 常见于内核/驱动层缓冲不足或资源紧张;RX-OVR 多与 Ring Buffer 溢出相关,提示 CPU/中断处理跟不上速率。
    • ifconfig 同样可查看 dropped/overruns(较老工具,仍可用)。
  • 驱动与硬件层细节:
    • sudo ethtool -S <iface> 查看驱动私有计数,如 rx_fifo_errors、rx_missed_errors、rx_over_errors 等,定位是否为硬件/驱动队列溢出或信号错误。
  • 建议做法:在测试前后对比计数增量,确认是否在测试期间 dropped 持续增长。

三、定位内核与协议栈丢包

  • 协议栈统计:
    • netstat -sss -s 查看 segments retransmitted、packet receive errors 等,判断是否因链路不稳定导致 TCP 重传 或上层接收错误。
  • 内核丢包热点:
    • sudo dropwatch -l kas 然后 sudo dropwatch -start,实时打印内核 skb 丢弃位置(如 icmp_rcvtcp_v4_rcv),快速定位内核路径瓶颈。
  • 队列与缓冲参数:
    • 查看/调整接收队列:sysctl net.core.netdev_max_backlog(默认常见为 1000),结合 ethtool -g <iface> 观察/调整 Ring Buffer 大小,缓解 overruns
  • 连接跟踪与策略:
    • 检查 conntrack 溢出:dmesg | grep conntrack;必要时调大相关阈值。
    • 反向路径过滤:cat /proc/sys/net/ipv4/conf//rp_filter;开启日志:sysctl -w net.ipv4.conf.all.log_martians=1,在 /var/log/messages 观察异常源地址。
  • 防火墙策略:
    • 临时排查策略影响:systemctl status firewalld;必要时在受控窗口内停止验证是否为规则丢弃。

四、在流量压力下复现并量化

  • 生成背景流量:
    • 吞吐测试:iperf3 -c <server> -t 30 -P 4(并发 4 流,持续 30 秒),或 nuttcp/netperf 模拟不同流量模型。
  • 同步观测:
    • 在跑流量的同时,另开终端持续观察 ip -s link show <iface>dropped 增量、ethtool -S <iface> 的关键计数、netstat -sretransmits,以及 dropwatch 的内核热点。
  • 结果判读:
    • 若仅在加压期间 dropped/overruns 明显上升,多为 队列/缓冲不足CPU/中断瓶颈
    • TCP 重传 同步升高,多为链路不稳定或远端拥塞;
    • 若某跳 mtr 丢包高而后恢复正常,多为中间设备限速/策略。
  • 抓包取证:
    • 在问题方向抓包:sudo tcpdump -i <iface> -nn host <对端IP> -c 2000 -w drop.pcap,用 Wireshark 分析重传、乱序、ICMP 差错等。

五、常见现象与处理对照表

现象 重点命令 可能原因 处理建议
RX-DRP 增长 ip -s linknetstat -I 内核/驱动缓冲不足、软中断/CPU瓶颈 提升软中断亲和/队列、优化应用、适度增大 netdev 缓冲
RX-OVR 增长 cat /proc/net/devethtool -S Ring Buffer 溢出 ethtool -g 增大环形缓冲,检查 CPU/中断负载
TCP 重传升高 netstat -s 链路不稳定、远端拥塞 结合 mtr/ping 定位路径问题,优化窗口/协议参数
某跳 mtr 丢包后恢复 mtr 中间设备限速/策略 与网络侧协同核查限速、ACL、策略路由
conntrack 溢出日志 dmesg 连接跟踪表满 调大 conntrack 相关阈值,优化连接生命周期
rp_filter 导致丢包 sysctlnetstat -s 反向路径校验不匹配 调整 rp_filter 策略或修正路由/掩码
防火墙规则丢弃 firewalld 状态 策略过严 临时停用验证,细化规则白名单化

0