游戏卡顿白皮书 › L6 服务器网卡
网卡驱动/固件问题 NIC hang / reset
原因 ID nic-reset · 主责 运维团队·系统运维
在含图示和实验的完整版中打开此卡片 →
驱动 bug 或某项功能异常导致网卡停住、重启,这期间所有收发都会中断。
起因 驱动 bug、卸载(offload)功能异常 → 结果 网卡停住后重启(几秒) → 画面表现 该服务器上所有人一起卡住,随后瞬移或掉线
- 症状
- 卡住, 掉线
- 因素
- 丢包
- 谁会遇到
- 全服
- 何时出现
- 偶尔随机, 开得越久越严重
- 负责方
- 主责 运维团队·系统运维
- 运维团队要做的事
- 检查内核日志中的“transmit queue … timed out”“Link is Down”记录并设告警;更新驱动和固件;关闭有问题的功能(offload 等)。
- 监控图上
- 断流后集中到达 · 服务器收发包数
- 查看位置
- 用 dmesg 在内核日志中查找“NETDEV WATCHDOG … transmit queue N timed out”、驱动重置以及“Link is Down”“Link is Up”记录,并看同一时刻服务器的收发包数
- 确认依据
- 停住的时刻内核日志里有发送队列超时或链路 down/up 记录,那几秒内收发包数为 0
- 排除依据
- 内核日志干净、交换机侧端口也正常,看游戏服务器进程的停顿(“服务器 GC 全局停顿”“死锁”)或“网络设备故障切换(主备切换)”
- 确认手段
- 运维工具即可确认(无需游戏代码)
出处
- net/sched/sch_generic.c (Linux v6.12) Linux kernel
发送队列停住时,内核看门狗会记录“NETDEV WATCHDOG … transmit queue N timed out”,并调用驱动的重置函数 - drivers/net/ethernet/intel/ixgbe/ixgbe_main.c (Linux v6.12) Linux kernel
ixgbe 驱动在发送停住时重置适配器,链路断开时记录“NIC Link is Down” - ethtool(8) — Linux manual page ethtool
用 ethtool -K 逐个关闭 offload 功能的选项
相关原因
同一层:L6 服务器网卡
其他层中同样导致“卡住”的原因
查看含图示和实验的原卡片