Linux

伺服器無法訪問並自行恢復(很可能是網路問題)

  • November 16, 2012

我在工作場所使用的伺服器出現了一個奇怪的問題(如果這很重要,它位於 NAT 後面)。問題是,有時它會變得無法訪問,然後又會再次恢復,通常在幾秒鐘內,有時會持續長達 1 分鐘。它不會重新啟動,也不會崩潰。它只是變得無法訪問。在此期間,我無法 ssh 進入它,也無法訪問機器上執行的任何應用程序(它正在執行幾個 Rails 應用程序,因此它們也變得無法訪問)。我檢查了 dmesg 並看到了這些行 -

[    4.958074] ADDRCONF(NETDEV_UP): eth0: link is not ready
[    5.040476] ADDRCONF(NETDEV_UP): eth1: link is not ready
[    5.175624] igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
[    5.177207] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

幾行之後,我看到有關網路介面的類似內容 -

[1195777.544167] igb: eth0 NIC Link is Down
[1195780.962943] igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX

看起來確實是網路問題。/var/log/messages 沒有顯示任何有趣的內容。我不確定如何調試它。關於它可能是什麼的任何線索?我應該在這裡檢查什麼?謝謝!

這種問題通常不會產生很多日誌消息。您已經發現了兩條重要的消息,它們顯示介面關閉和啟動。這些可以通過拔下乙太網電纜並將其重新插入來生成。

可能是網卡和路由器之間的電纜壞了。我的第一步(一次完成一個)將是:

  • 更換連接到 eth0 的電纜,看看是否能解決問題。
  • 重新配置網路介面,使目前在 eth0 上的流量在 eth1 上,反之亦然。(需要重新啟動網路和交換電纜。)如果問題發生了,那麼它就像一個故障的 NIC。
  • 驗證上游設備及其電源的狀態。如果它失去動力或以其他方式失敗,您可以看到這種行為。
  • 執行netstat -iifconfig檢查錯誤計數。通常,它們應該是 0 或個位數。高載波或幀錯誤可能表示雙工不匹配。可以通過上傳然後下載大文件來驗證雙工不匹配。伴隨著錯誤計數增加的大速度差異表明鏈路上的不匹配。電纜調製解調器通常具有不同的上傳和下載頻寬,因此本地傳輸更適合此測試。

我使用的一種工具是mtr. 我使用類似mtr -i 15 -n google.com監控連接的命令。考慮使用您的 ISP 的伺服器之一,而不是 google.com。它可以在報表模式下批量執行。如果問題出在伺服器的上游,則輸出應有助於確定問題發生的位置。

引用自:https://serverfault.com/questions/449236