什麼會導致伺服器上的所有服務都發生故障,但仍對 ping 做出回應?以及如何弄清楚

什麼會導致伺服器上的所有服務都發生故障,但仍對 ping 做出回應?以及如何弄清楚

在我身上已經發生過兩次,在幾天之內,我的伺服器完全關閉,這意味著http、ssh、ftp、dns、smtp,基本上所有服務都停止回應,就像伺服器已關閉一樣,除了它仍然響應ping ,這是最讓我困惑的。

我確實有一些php 腳本,這些腳本會在短時間內在伺服器上造成巨大的負載(CPU 和記憶體),由一小群用戶使用,但通常伺服器在這些突發情況下「生存」得很好,當它崩潰時,它會崩潰。

我並不是要求你神奇地告訴我這些崩潰的最終原因,我的問題是:是否有一個進程的死亡可能會導致所有這些服務同時關閉?有趣的是,除了 ping 之外,所有網路服務都出現故障。如果伺服器 100% 的 CPU 被某個進程佔用,它也不會回應 ping。如果 apache 由於(例如)損壞的 php 腳本而崩潰,則只會影響 http,而不影響 ssh 和 dns.... 等。

我的作業系統是 Cent OS 5.6

最重要的是,硬重啟伺服器後,我應該查看哪些系統日誌? /var/log/messages 沒有透露任何可疑的內容。

答案1

太長了;博士仍然回應 ping 是預期行為,請檢查您的記憶體使用情況)

ICMP 回顯請求(即 ping)由核心內網路堆疊處理,沒有其他依賴性。

核心被稱為“記憶體駐留”,這意味著它將始終保存在 RAM 中,並且不能像常規應用程式那樣交換到磁碟。

這意味著在物理記憶體耗盡的情況下,應用程式將交換到磁碟,但核心仍保留在原來的位置。當實體記憶體和交換記憶體都已滿(且系統無法再管理您的程式)時,機器將崩潰。然而因為A)內核仍在內存中並且b)它可以在沒有任何其他幫助的情況下回應 ping 請求,儘管一切都死了,系統仍將繼續回應 ping。

關於你的問題,我強烈懷疑記憶體問題。安裝“sysstat”並使用“sar”命令查看記憶體/cpu/負載/io 負載等日誌。

我也會考慮看看訊息或者/var/日誌/訊息是否有任何 OOM 殺手(內存不足殺手)被調用的跡象。這是核心的緊急系統,當記憶體耗盡時,它將開始殺死進程。它的有效性很大程度上取決於被終止的進程。消耗內存的單一進程將被有效地殺死並釋放內存,但是基於 apache 的網站將在子進程被殺後立即產生替換進程。

答案2

通常,這是 I/O 或磁碟子系統問題。很多時候,這會伴隨著極高的系統平均負載。例如,在 4-CPU 系統上,當腳本運行錯誤、鎖定一堆檔案並且負載上升到 36...時,下圖中詳述的系統變成無回應(但可 ping 通)。

在此輸入影像描述

在 RAM 中運行且不需要磁碟存取的服務繼續運行...因此,網路堆疊 (ping) 已啟動,但其他服務在需要磁碟存取時停止...引用金鑰時的 SSH 或需要查找密碼。當平均負載達到 30 左右時,SMTP 往往會關閉...

當系統處於此狀態時,請嘗試nmap對伺服器的 IP 進行遠端操作以查看發生了什麼情況。

如果這是磁碟或儲存問題,您的日誌記錄可能不起作用...

您能描述一下硬體設定嗎?這是虛擬機器嗎?儲存佈局是怎樣的?

除了記錄之外,您還想看看是否可以繪製系統效能圖表並了解何時發生這種情況。看看這是否與特定活動相關。

相關內容