我的 Amazon Elastic Block Store (Amazon EBS) 磁碟區尚未達到 Amazon CloudWatch 中的輸送量或每秒讀寫次數 (IOPS) 限制。但是磁碟區顯示為限流狀態,並且出現高延遲和佇列過長的問題。
解決方法
CloudWatch 指標有助於監控所有 Amazon EBS 磁碟區類型的 IOPS 和輸送量。CloudWatch 指標會以一分鐘的間隔收集樣本。但是,系統會以毫秒速率執行 I/O 作業。當磁碟區在比收集間隔更短的時間間隔內出現高 IOPS 或高輸送量的爆量情形時,CloudWatch 不會擷取爆量。此失敗是因為指標監控是以每秒的速率進行所導致。
使用 CloudWatch 指標以識別可能的微型爆量
檢查 VolumeIdleTime 指標
VolumeIdleTime 指標圖形會顯示在指定的持續時間內未提交讀取或寫入作業的秒數。如果 VolumeIdleTime 較高,則磁碟區會在期間的大部分時間內維持為閒置狀態。如果在同一期間的 IOPS 或輸送量夠高,那麼該磁碟區會出現微型爆量情形。
計算 EBS 磁碟區收到的平均輸送量和平均 IOPS
請使用下列公式來計算 EBS 磁碟區的平均輸送量:
預估平均輸送量 (單位為 Bps) = (Sum(VolumeReadBytes) + Sum(VolumeWriteBytes) ) / (Period - Sum(VolumeIdleTime) )
請使用下列公式來計算 EBS 磁碟區的平均 IOPS:
預估平均 IOPS (單位為 Ops) = (Sum(VolumeReadOps) + Sum(VolumeWriteOps) ) / ( Period - Sum(VolumeIdleTime) )
使用 CloudWatch 以取得微型爆量事件
請完成下列步驟:
- 開啟 CloudWatch console (CloudWatch 主控台)。
- 選擇 All Metrics (所有指標)。
- 使用磁碟區 ID 來搜尋出現微型爆量的磁碟區。
- 選擇 EBS,然後選擇 Per-Volume Metrics (每個磁碟區指標)。
- 若要檢視輸送量指標,請選取 VolumeReadBytes、VolumeWriteBytes 和 VolumeIdleTime。
- 選擇 Graphed metrics (圖形化指標)。
- 針對 Statistics (統計資料) 選取 Sum (總和),並針對 Period (期間) 選取 1 minute (1 分鐘)。
- 針對 Add Math (新增數學) 選擇 Start with empty expression (以空白表達式開始)。
- 針對Expression (表達式) 的Details (詳細資訊),請將指派的圖形 ID 用於 VolumeReadBytes、VolumeWriteBytes、VolumeIdleBytes。這會建立預估平均輸送量 (單位為 Bps) 公式。
例如:(m1+m2)/(60-m3)。
如果圖表顯示的值大於磁碟區輸送量上限,則工作負載出現微型爆量。
若要檢查是否因 I/O 作業造成微型爆量,請遵循上述步驟操作。然後在步驟 5 中,使用 VolumeReadOps、VolumeWriteOps 和 VolumeIdleTime 取代 VolumeReadBytes、VolumeWriteBytes 和 VolumeIdleTime。
使用作業系統層級工具確認微型爆量
即使在磁碟區忙碌時 (VolumeIdleTime 較低),EBS 磁碟區依然可能出現微型爆量情形。對於具有低 VolumeIdleTime 的磁碟區,具有精細樣本收集功能的作業系統層級工具可以更有效的識別工作負載是否出現微型爆量情形。
Linux
若要以一秒的精度報告所有已裝載磁碟區的 I/O 統計資料,請執行 iostat 命令:
iostat -xdmzt 1
如需詳細資訊,請參閱 Linux 手冊頁網站上的 iostat(1)。
**注意:**iostat 工具是 sysstat 套件的一部分。如果您找不到 iostat 命令,則請執行下列命令,在 Amazon Linux Application Machine Images (AMI) 上安裝 sysstat:
sudo yum install sysstat -y
若要判斷是否達到輸送量限制,請檢閱輸出中的 rMBps 和 wMBps。如果 rMBps + wMBps 大於磁碟區的輸送量上限,則磁碟區出現微型爆量情形。
若要判斷您是否達到 IOPS 限制,請檢閱輸出中的 rps 和 wps。如果 rps + wps 大於磁碟區的 IOPS 上限,則磁碟區出現微型爆量情形。
Windows
在 Windows 效能監視器中執行 perfmon 命令。如需詳細資訊,請參閱判斷 IOPS 和輸送量要求。
變更磁碟區大小或類型以調整您的應用程式,並防止微型爆量
微型爆量可能會導致應用程式出現 I/O 限流或 I/O 延遲。為了防止這種情況,您可以將磁碟區修改為符合您所需的 IOPS 和輸送量的類型和大小,即使在微型爆量水準下亦然。如需詳細資訊,請參閱 Amazon EBS 磁碟區類型。執行個體可以推送至所有已連接 EBS 磁碟區的 IOPS 和輸送量受到限制。
最佳實務是根據工作負載進行磁碟區基準效能測試,以驗證可以在測試環境中安全調整工作負載的磁碟區類型。如需詳細資訊,請參閱進行 Amazon EBS 磁碟區基準效能測試。