Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 伺服器網卡 watchdog timeout 故障排查:acpi=off noapic 核心參數救援實錄

編輯:系統常見問題解答

生產環境 Linux 伺服器突發公網斷線,內網仍通。dmesg 顯示 NETDEV WATCHDOG: eth0: transmit timed out。重啟網路服務暫時恢復,但問題週期性復發。經排查為 ACPI 電源管理與 APIC 中斷控制器與網卡驅動不相容,透過 GRUB 核心啟動參數 acpi=off noapic 徹底根治。本文完整記錄排查思路與解決方案。

故障現象

  • 公網 IP 無法 Ping、SSH、HTTP 存取;內網 IP 正常。
  • dmesg 關鍵錯誤:
    NETDEV WATCHDOG: eth0: transmit timed out
  • /etc/init.d/network restart 或 systemctl restart network 可暫時恢復,但數小時至數天後復發。

排查過程

  1. 檢查網卡驅動版本(ethtool -i eth0)、固件版本,確認已為最新。
  2. 排除實體層:更換網線、交換機埠、關閉交換機流控,問題持續。
  3. 搜尋社群:發現相同錯誤多見於舊款 Broadcom/Intel e1000e 驅動與 ACPI/APIC 交互問題。
  4. 嘗試升級核心、安裝 kernel-firmware、調整 tx_queue_len、關閉 TSO/GSO/LRO (ethtool -K eth0 tso off gso off lro off),均未根治。

根因與解決

根因:ACPI 電源管理嘗試將網卡置入低功耗狀態(D3),或 APIC 中斷路由錯誤導致網卡中斷遺失,驅動未在 watchdog 逾時前完成傳輸,觸發 NETDEV WATCHDOG 重置網卡,造成短暫斷線。

解決方案:在 GRUB 核心啟動參數加入 acpi=off noapic。

  1. 編輯 /boot/grub/grub.conf(或 /boot/grub/menu.lst、/etc/default/grub 視發行版)。
  2. 找到預設啟動項的 kernel / linux16 / linux 行,末尾追加:
    acpi=off noapic
  3. 若使用 GRUB2 (/etc/default/grub):
    GRUB_CMDLINE_LINUX="acpi=off noapic"
    執行 grub2-mkconfig -o /boot/grub2/grub.cfg。
  4. 重新開機生效。

參數影響分析

參數作用副作用
acpi=off禁用 ACPI 進階電源管理(休眠、CPU 降頻、裝置電源狀態控制)無法使用睡眠/休眠、CPU 降頻、電池狀態偵測(伺服器通常不需)
noapic禁用 IO-APIC,改用傳統 PIC 中斷控制器中斷處理效率略降、無法支援超過 15 條 IRQ(現代伺服器通常有 IO-APIC,但若驅動相容則可開啟)

驗證結果

  • 重開機後連續運行 30 天無 NETDEV WATCHDOG 錯誤,公網連線穩定。
  • dmesg | grep -i watchdog 無輸出。
  • CPU 頻率固定在最高(cpufreq-info 顯示 performance governor),功耗略增但在可接受範圍。

替代方案(若不願完全關閉 ACPI)

  • pcie_aspm=off:僅關閉 PCIe 主動狀態電源管理,保留 CPU 降頻。
  • intel_idle.max_cstate=1:限制 CPU 進入深度閒置狀態。
  • 升級至較新核心(5.10+ LTS),許多驅動已修正 ACPI/APIC 相容問題。

核心啟動參數是排查硬體相容性問題的利器。遇到週期性網卡 watchdog timeout,優先嘗試 acpi=off noapic,往往能以最小代價換取長期穩定。

Copyright © Windows教程網 All Rights Reserved