Linux dropped怎么查
导读:Linux dropped 排查与定位 一、快速定位思路 明确方向:先看网卡层(物理/驱动)是否有丢包,再看内核网络栈(协议栈、netfilter、socket 缓冲)是否丢包,最后落到应用层(读取是否及时、UDP 无连接特性)。 关注计...
Linux dropped 排查与定位
一、快速定位思路
- 明确方向:先看网卡层(物理/驱动)是否有丢包,再看内核网络栈(协议栈、netfilter、socket 缓冲)是否丢包,最后落到应用层(读取是否及时、UDP 无连接特性)。
- 关注计数器的变化:用对比法(相隔10–30秒)观察是否持续增长,避免只看一次性的历史累计值。
- 结合负载与基线:CPU、软中断、内存、带宽是否与平时差异明显,先排除资源瓶颈。
二、查看网卡层 dropped
- 查看接口统计(推荐):
- ip:
ip -s -s link show < iface>(关注 RX/TX dropped) - 传统:
ifconfig < iface>(关注 RX dropped / TX dropped) - 示例:
ip -s -s link show eth0 RX: bytes packets errors dropped overrun mcast 377786943 473945 0 12 0 0 TX: bytes packets errors dropped carrier collsns 266024587 377467 0 0 0 0
- ip:
- 查看驱动/NIC 私有计数(能细化到队列、丢弃原因):
ethtool -S < iface> | egrep 'drop|discard|fifo|over|miss' - 查看内核网络设备总览:
cat /proc/net/dev - 若 RX dropped 增长而 ifconfig 的 overruns=0,可能是队列/协议栈侧丢弃;若 overruns 增长,多与网卡 ring buffer或驱动/中断相关。可结合
ethtool -g < iface>查看/调整 rx/tx ring 大小(需谨慎)。
三、查看协议栈与应用层丢包
- 协议栈统计(按协议定位):
netstat -s # 总览 netstat -s -u # 只看 UDP netstat -s -t # 只看 TCP- UDP 关注:packet receive errors(常见与 socket 缓冲不足、应用读取慢有关)、receive buffer errors。
- TCP 关注:segments retransmitted、failed connection attempts 等。
- 内核丢包事件追踪(定位具体函数/位置):
- dropwatch(直观打印丢包位置):
输出示例中出现 nf_hook_slow 多为 netfilter 规则丢弃;出现 tcp_v4_rcv 等多为协议栈处理路径。dropwatch -l kas dropwatch> start # Ctrl-C 停止,查看函数栈 - perf(更灵活,可抓堆栈):
sudo perf record -g -a -e skb:kfree_skb sudo perf script
- dropwatch(直观打印丢包位置):
- 防火墙/策略丢包核对:
sudo iptables-save | grep -i drop sudo iptables -L INPUT -nv # 观察 pkts 是否增长 - 半连接队列溢出迹象:
若 SYN_RECV 明显增多,可能是 SYN Flood 或 tcp_max_syn_backlog 偏小。dmesg | grep -i "TCP: drop open request" netstat -ant | awk '$6 ~ /SYN_RECV/ { count++} END { print count} '
四、常见现象与处理要点
- 现象:RX dropped 增长,RX errors/overruns=0
处理:多为内核/队列/协议栈侧丢弃,优先用 dropwatch/perf 定位;检查 netfilter/iptables 规则、应用读取是否及时、socket 缓冲是否偏小。 - 现象:overruns 增长
处理:多与网卡 ring buffer或中断/驱动相关;可尝试ethtool -g适度增大 rx ring,并检查中断绑定/多队列(RSS)是否均衡。 - 现象:UDP packet receive errors 增长
处理:常见为应用消费慢或socket 接收缓冲不足;优化应用读取路径、增大接收缓冲(如net.core.rmem_max、net.core.rmem_default),并控制发送速率。 - 现象:dmesg 提示 TCP 半连接丢弃
处理:排查 SYN Flood,必要时调大 tcp_max_syn_backlog、启用 syncookies 等防护策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux dropped怎么查
本文地址: https://pptw.com/jishu/754249.html
