為什麼我的 Amazon EBS 磁碟區會遇到高 I/O 等待、佇列長度增加,及延遲尖峰?

1 分的閱讀內容
0

我的 Amazon Elastic Block Store (Amazon EBS) 磁碟區遇到高 I/O 等待、佇列長度增加,以及延遲尖峰。為什麼會發生這種情況呢?

簡短說明

對於 Amazon EBS 磁碟區,增加的佇列長度和高 IO 等待時間表示 I/O 作業完成存在延遲。

下列為延遲增加的最常見原因:

  • EBS 磁碟區已達到其輸送量或 IOPS 上限。
  • 已達到 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的輸送量或 IOPS 上限。
  • 正在發生微型爆量。
  • 磁碟區會從快照還原並正在進行初始化。
  • 磁碟區的基礎儲存子系統發生問題。

解決方式

磁碟區已達到其輸送量或 IOPS 上限

EBS 磁碟區依據其類型和大小具有輸送量和 IOPS 上限。您還可對 gp3io1io2 磁碟區類型佈建這些限制。若您達到了上限,則可能會遇到延遲。如要判斷輸送量和 IOPS 上限,請參閱如何計算 Amazon EBS 磁碟區的最大 IOPS 和輸送量? 接著,您可使用 CloudWatch 指標來檢查 EC2 執行個體的 EBS 磁碟區是否達到輸送量或 IOPS 上限

若您經常達到輸送量或 IOPS 上限,請考慮將磁碟區類型或大小變更為符合應用程式需求的磁碟區類型或大小。最佳實務是在測試環境中根據您的工作負載對 EBS 磁碟區進行基準測試,以確定哪些磁碟區類型最適合您。

已達執行個體的輸送量或 IOPS 上限

EBS 最佳化執行個體具有最大彙總後輸送量和 IOPS,可在連接至執行個體的所有 EBS 磁碟區中達成。您可能會看到高 I/O 等待時間並增加延遲,但磁碟區並未達到輸送量或 IOPS 上限。若發生此狀況,請檢查磁碟區的輸送量或 IOPS 是否達到執行個體的輸送量或 IOPS 上限

例如,您的 gp3 磁碟區為 1 TiB,其中包含 16,000 個佈建 IOPS 和 700 MiB/ 秒輸送量,並連結至 t3.medium 執行個體。一個 t3.medium 執行個體可達到 260.57 MiB/秒輸送量和 11,800 IOPS 的最大效能,在連接至其的所有磁碟區彙總。執行個體在 24 小時期間內只需 30 分鐘即可達成此目標。接著,效能會限制為 43.43 MiB/秒的輸送量和 2,000 IOPS 的基準,在所有連結的磁碟區之間彙總。雖然您的單一磁碟區可以維持高達 700 MiB/秒 和 16,000 IOPS,但執行個體無法達到此效能。

若您的應用程式效能需求超過執行個體的功能,請考慮將執行個體類型變更為可維持工作負載需求的執行個體類型。如需可用執行個體類型及其各自 Amazon EBS 輸送量和 IOPS 上限的清單,請參閱 EBS 最佳化執行個體規格

正在發生微型爆量

當某個磁碟區在較收集期間短很多的期間內「爆增」IOPS 或輸送量時,便會發生微型爆量。微型爆發不會反映在 Amazon CloudWatch 指標上,且若您沒有進行檢查,則可能會錯過微型爆量。如要判斷是否有微型爆量的問題,請參閱如何確定 EBS 磁碟區是否微型爆量以及防止這種情況發生?

磁碟區會從快照還原並正在進行初始化

從快照還原磁碟區時,其資料會從 Amazon Simple Storage Service (Amazon S3) 提取並寫入磁碟區中。此程序稱為初始化。初始化可能會造成首次存取每個資料區塊時 I/O 作業的延遲時間增加。

如要降低初始化對磁碟區效能的影響,您可透過讀取磁碟區上的區塊,來強制磁碟區的初始化。您還可開啟 Amazon EBS 快速快照還原,以在建立時完全初始化磁碟區。

磁碟區的基礎儲存子系統發生問題

若您嘗試了上述所有疑難排解步驟,但仍遇到高延遲狀況,則請聯絡 AWS Support。


相關資訊

如何使用 CloudWatch 指標來計算 EBS 磁碟區提供的平均輸送量和平均 IOPS 數目?

解決從 EBS 快照還原 Amazon EBS 磁碟區時的 I/O 延遲

AWS 官方
AWS 官方已更新 1 年前