0

0

"NETDEV WATCHDOG: transmit queue timed out" 导致网卡卡死的修复流程

冷漠man

冷漠man

发布时间:2026-01-25 03:47:09

|

630人浏览过

|

来源于php中文网

原创

NETDEV WATCHDOG超时直接卡死网卡是内核主动保护机制,因驱动层TX描述符耗尽、DMA失败或硬件卡死导致发送停滞,需重载驱动或升级固件修复。

\

为什么 NETDEV WATCHDOG 超时会直接卡死网卡

这不是单纯的告警,而是内核在检测到网卡驱动长时间未完成数据包发送(默认 5 秒)后,主动触发的保护性停用。一旦触发,对应队列会被禁用,tx_queue_len 归零,ifconfigip link 里能看到 NO-CARRIER 或持续 LOWER_UP 但无流量,dmesg 里反复刷出该错误——说明驱动已放弃恢复,必须人工干预。

  • 根本原因几乎都落在驱动层:TX 描述符耗尽、DMA 映射失败、硬件状态机卡在 BUSY、中断未及时响应
  • 不是网络拥塞或丢包问题,pingtcpdump 在本地可能完全正常,但出向流量彻底停滞
  • 重启网络服务(systemctl restart networking)无效,必须重载驱动或重启内核模块

快速定位是哪个网卡和驱动在出问题

先确认报错绑定的具体设备:dmesg -T | grep -i "watchdog.*timed out",输出类似 NETDEV WATCHDOG: eth0 (tg3): transmit queue 0 timed out,重点看括号里的驱动名(这里是 tg3)和接口名(eth0)。

  • 查驱动归属:ethtool -i eth0 | grep driver,验证是否与 dmesg 一致
  • 查当前驱动状态:lsmod | grep tg3(替换成你实际的驱动名),确认是否已加载
  • 查硬件是否异常:lspci -vv -s $(ethtool -i eth0 | awk '/bus-info/ {print $3}') | grep -A10 "Kernel driver",观察是否有 Interrupt 字段缺失或 MSI-X 状态异常

临时恢复:卸载并重载驱动(不重启系统)

这是最快让网卡“活过来”的方式,但仅治标。执行前确保你有带外管理(如 iDRAC/iLO)或本地终端访问,避免 SSH 断连后失联。

  • 关闭接口:ip link set eth0 down
  • 卸载驱动:rmmod tg3(替换成你的驱动名,如 e1000eixgbe
  • 重新加载:modprobe tg3
  • 启用接口:ip link set eth0 up
  • 验证:ethtool eth0 | grep "Link detected" 应为 yes,且 cat /proc/interrupts | grep eth0 有中断计数增长

注意:某些驱动(如 mlx5_core)依赖多个模块,需按依赖顺序卸载;若报 Module tg3 is in use,用 lsof -nPi | grep eth0 找占用进程,或加 -f 强制(不推荐)。

Sologo AI
Sologo AI

SologoAI 是一款AI在线LOGO生成工具,帮助用户快速创建独特且专业的品牌标识和配套VI设计。

下载

永久修复要盯紧三个配置点

临时重载只是绕过问题,真正稳定需从硬件兼容性、驱动参数、队列调度三方面收敛。

  • 升级固件:尤其是 Broadcom(tg3)、Intel(e1000e)网卡,老版本 NIC 固件在高吞吐下易卡 TX 状态机,去厂商官网下最新 .bin 文件 + bnx2-firmwareintel-microcode 包更新
  • 调驱动参数:在 /etc/modprobe.d/ 下新建文件(如 net-fix.conf),添加:
    options tg3 disable_msi=1
    options tg3 enable_mcp=0
    disable_msi 对老主板更稳,enable_mcp 关闭某些 BCM 芯片的电源管理副作用)
  • 压测验证:用 iperf3 -c X.X.X.X -t 300 -P 4 持续 5 分钟,同时 watch -n1 'cat /sys/class/net/eth0/queues/tx-0/byte_count' 观察是否突变为 0 —— 这才是真实复现点

很多团队卡在“重载完好了几天又复发”,往往是因为只改了驱动参数却没升固件,或者误把 net.core.netdev_watchdog_timeo 调大(掩盖问题,不解决)。真正稳定的系统,dmesg 里不该出现这行错误。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1072

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

127

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

826

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

468

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

13

2025.12.06

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

17

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.8万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.7万人学习

Excel 教程
Excel 教程

共162课时 | 13.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号