伺服器的磁碟佇列長度很高,但磁碟位元組/秒低於其能力

伺服器的磁碟佇列長度很高,但磁碟位元組/秒低於其能力

我有一個在 Windows VMWare 平台上執行 SQL Server 的環境,使用 SAN 和在 RAID 6 中設定的 SSD,並使用 Veeam 進行伺服器備份,使用 LiteSpeed 進行 SQL Server 備份。

在過去的一年裡,我多次遇到一個問題,有時資料庫速度慢得像爬行一樣,而我的平均速度。磁碟佇列長度很高,但我的磁碟位元組/秒遠低於其應有的能力。

這是資料庫伺服器上的效能監視器。發生此問題時,平均。磁碟佇列長度始終在數百範圍內,磁碟位元組/秒保持在 5-15 MB/秒左右。在正常操作期間(當此問題未發生時),磁碟位元組/秒會高達 900 MB/秒左右。

在此輸入影像描述

自從這個問題開始發生以來,我更換了 SAN 硬體——包括交換器。但問題在新硬體上仍然存在。

我的理論是這不是 SQL Server 問題,因為如果問題是 SQL Server 使磁碟 I/O 飽和,我應該會看到更高的磁碟位元組/秒。但每當出現此問題時,磁碟位元組/秒總是很低。

我想可能是備份軟體的問題——要么在資料庫伺服器上運行,要么在使用相同VMWare/SAN 的另一台伺服器上運行——但在出現此問題時,伺服器備份和SQL Server 備份似乎都沒有運行。

我最後的想法是這是 VMWare 的問題,但我已經聯繫了他們,但到目前為止他們還無法提供協助。

重新啟動資料庫伺服器可以解決該問題。有時問題會在一天之內再次發生,有時問題會幾個月都不會再發生。每當問題發生時,我都不知道資料庫上運行的正常工作負載以外的任何情況。

當磁碟吞吐量減慢至其應有能力的 1% 左右時,什麼可能導致此問題?

答案1

HDD 的工作佇列越長,速度就越慢,反之亦然 - 您可以向其提供的 IOPS 數量非常有限(大約 40-200,取決於等級和 RPM)。超過該點的任何需求增長都會進一步降低其性能。

建立 HDD 陣列會增加整個陣列中可能的讀取 IOPS 總數,但通常少於簡單地將各個 IOPS 相加。寫入 IOPS 更為複雜,並且在很大程度上取決於 RAID 等級、快取等。

除此之外,任何事情都需要 SSD 和適當的控制器。

答案2

由於您已經在使用 SSD,我建議您遇到的問題可能與我遇到的問題類似,即 SSD 中的 TRIM 未正確處理。擦除SSD 上的資料區塊不是即時的,準備區塊以供重複使用可能是一個緩慢的過程,並且可能是速度減慢的原因- 如果您的空閒和準備好的區塊耗盡,​​則陣列可能會像新的一樣大幅減慢塊已準備好。檢查您的 SAN 是否知道這些是 SSD,並且它們啟用了背景 TRIM。

相關內容