温馨提示×

Linux dropped与网络连接有关

小樊
42
2026-01-11 07:07:33
栏目: 智能运维

Linux 网络 dropped 的含义与定位

一、dropped 代表什么

  • 在 Linux 网络统计中,dropped 表示网卡或内核在接收/发送路径上“已接收或待处理但被丢弃”的数据包数量。常见位置包括:网卡 Ring Buffer 溢出、内核 backlog 队列溢出、以及因策略/资源限制导致的丢弃。注意:它并不等同于链路层物理丢包(那通常体现在 errors 中)。可用 ip -s linkifconfig/proc/net/devethtool -S 查看。若 dropped 持续增长,通常意味着网络或系统处理能力与负载不匹配,需要排查。

二、快速定位步骤

  • 观察总体趋势与方向
    • 查看接口收发与丢弃:ip -s -s link show dev eth0(关注 RX/TX packets、dropped、errors 的增长)。
    • 系统维度统计:sar -n DEV 1 10sar -n EDEV 1 10(看 rx/tx PPS、kB/s 与错误/丢包趋势)。
  • 判断是否为网卡/驱动层问题
    • 硬件队列溢出:ethtool -S eth0 | grep -i rx_fifocat /proc/net/dev 中的 fifo 项是否增长。
    • Ring Buffer 容量:ethtool -g eth0;必要时调大:ethtool -G eth0 rx 4096 tx 4096
    • 物理层与协商:ethtool eth0Speed/Duplex/Autoneg;异常时重协商或强制一致:ethtool -r eth0ethtool -s eth0 speed 1000 duplex full autoneg off
    • 流控:ethtool -S eth0 | grep control 观察 rx_flow_control_xon/off;必要时关闭/开启以配合上游设备:ethtool -A eth0 rx off tx off
  • 判断是否为内核/协议栈队列问题
    • 软中断与 backlog 溢出:cat /proc/net/softnet_stat(每行第二列为因 netdev_max_backlog 溢出丢弃);可调大:sysctl -w net.core.netdev_max_backlog=2000~5000
    • 连接跟踪表满(NAT/防火墙场景):dmesg | grep nf_conntrack;查看与调整:cat /proc/sys/net/netfilter/nf_conntrack_maxnf_conntrack_count;必要时增大表与桶并缩短已建立连接超时:sysctl -w net.netfilter.nf_conntrack_max=1048576net.netfilter.nf_conntrack_buckets=262144net.netfilter.nf_conntrack_tcp_timeout_established=3600
  • 抓包确认是否为策略或应用问题
    • 针对可疑端口/主机抓包:tcpdump -i eth0 port 22 or host x.x.x.x -nn -vv;若 SYN 无响应而链路 ping 正常,常见于 nf_conntrack 满、backlog 溢出、或防火墙 DROP 规则

三、常见原因与对应处理

现象/指标 可能原因 快速确认 处理建议
RX dropped 增长且 rx_fifo 同步增长 网卡 Ring Buffer 不足、CPU/软中断处理不及时 `ethtool -S eth0 grep rx_fifoethtool -g eth0`
dropped 增长且 softnet_stat 第二列增长 内核 netdev_max_backlog 队列溢出 cat /proc/net/softnet_stat 调大队列:sysctl -w net.core.netdev_max_backlog=2000~5000
dmesg 出现 “nf_conntrack: table full” 连接跟踪表 溢出(NAT/防火墙) `dmesg grep nf_conntrack/proc/sys/net/netfilter/nf_conntrack_*`
ifconfigerrors 增长(如 carriercrc_errors 物理层问题:双工/速率不匹配、线缆/光模块故障 ethtool eth0、`ethtool -S eth0 grep crc`
UDP 业务异常或时延抖动 UDP buffer 不足、应用消费慢、防火墙策略 ss -u ln/proc/net/udp、抓包 增大 socket 缓冲与应用并发;核查防火墙/安全组策略
SYN 不响应但 ping 正常 backlog/连接跟踪/防火墙 丢包 tcpdump 抓 SYN、`dmesg grep nf_conntrack`

四、实用命令清单

  • 接口与统计
    • ip -s -s link show dev eth0
    • cat /proc/net/dev
    • sar -n DEV 1 10sar -n EDEV 1 10
  • 网卡与驱动
    • ethtool eth0ethtool -S eth0 | grep -iE "rx_fifo|crc|length|control"
    • ethtool -g eth0ethtool -G eth0 rx 4096 tx 4096
    • ethtool -r eth0ethtool -A eth0 rx off tx off
  • 协议栈与队列
    • cat /proc/net/softnet_stat
    • sysctl -w net.core.netdev_max_backlog=2000
    • dmesg | grep nf_conntrack
    • cat /proc/sys/net/netfilter/nf_conntrack_maxnf_conntrack_count
    • sysctl -w net.netfilter.nf_conntrack_max=1048576net.netfilter.nf_conntrack_buckets=262144net.netfilter.nf_conntrack_tcp_timeout_established=3600
  • 抓包与连接
    • tcpdump -i eth0 port 22 or host x.x.x.x -nn -vv
    • ss -lntpss -u lnnetstat -s

0