Centos

一個程序佔用所有伺服器資源(iowait?)

  • January 4, 2020

我在 CentOS 7 下的同一個機器上同時執行多個程序(每個程序代表單獨的 Linux 使用者)。

我使用 Zabbix 進行監控。

有時,CPU 使用率圖表上會出現以下模式。

在此處輸入圖像描述

如果你放大,那麼它看起來像

在此處輸入圖像描述

因此伺服器凍結了一段時間,甚至 SSH 登錄也不起作用(當然,其他程序也沒有按預期工作)並且 Zabbix 代理無法將其數據發送到 Zabbix 伺服器(Zabbix 伺服器位於單獨的主機上) .

正如我從 Zabbix 圖例中了解到的,圖表的黃色部分是iowait

在此處輸入圖像描述

那麼你能解釋一下一個程序的iowait是如何如此劇烈地影響整個系統的嗎?

以及如何預防和限制這種行為?

它不是一個程序,它是事物在等待 IO 的時間。

我會說你可能有一個硬碟在那個時候完全超載。就像可笑的超載 - 可能是:

  • 非常糟糕的程式,不會在記憶體中緩衝東西。
  • 非常糟糕的硬體選擇(即沒有足夠的 IO 預算並且需要 SSD 的硬碟)。
  • 極其故障的硬體(HD 上的壞扇區)使其進入某種需要一些時間的重試模式。
  • 標準用法。如果您有一個確實重組索引的數據庫,它會盡可能快地嘗試這樣做,並且無論您使用什麼硬體都可能導致嚴重的 IO 峰值。

顯然,它也可能是驅動程序中的一些軟體錯誤,但鑑於這是一個專業論壇,我會假設您已確保在服務包上處於最新狀態。

您將不得不開始分析導致過多 IO 的原因。也就是說,您必須查看程序的 IO 等待統計資訊,而不是系統總數。

鑑於很多事情都在做 IO - 並且經常等待它完成 - 總 IO 過載會導致各種奇怪的行為也就不足為奇了。

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