我的 Amazon Elastic Block Store (Amazon EBS) 磁碟區未達到 Amazon CloudWatch 中的輸送量或每秒讀寫次數 (IOPS) 配額。但是磁碟區顯示為限流狀態,並且出現高延遲和佇列過長的問題。
解決方法
CloudWatch 指標每 1 分鐘收集一次樣本。然而 I/O 作業是以毫秒級速度發生的。當磁碟區在比收集間隔更短的時間間隔內出現高 IOPS 或高輸送量的爆量情形時,CloudWatch 不會擷取爆量。
使用 CloudWatch 指標以識別可能的微型爆量
檢查 VolumeIdleTime 指標
VolumeIdleTime 指標圖表會顯示在指定的持續時間內未提交讀取或寫入作業的秒數。如果 VolumeIdleTime 較高,則磁碟區會在在大部分持續時間內保持閒置狀態。如果在相同持續時間內發生了夠高的 IOPS 或輸送量,則表示該磁碟區經歷了微型爆量。
計算 EBS 磁碟區收到的平均輸送量和平均 IOPS
請使用下列公式來計算 EBS 磁碟區的平均輸送量:
預估平均輸送量 = ( Sum(VolumeReadBytes) + Sum(VolumeWriteBytes) ) / Ceil(Period - Sum(VolumeIdleTime))
請使用下列公式來計算 EBS 磁碟區的平均 IOPS:
預估平均 IOPS = ( Sum(VolumeReadOps) + Sum(VolumeWriteOps) ) / Ceil(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 (以空白運算式開始)。
- 在 Details of Expression (運算式的詳細資訊) 中,請使用為 VolumeReadBytes、VolumeWriteBytes、VolumeIdleBytes 指派的圖表 ID 來建立預估平均輸送量 (以 Bps 為單位) 公式。
例如,使用計算公式 (m1 + m2)/Ceil(60 - m3)。
如果圖表顯示的值大於磁碟區輸送量上限,則表示工作負載出現微型爆量。
若要檢查 I/O 作業是否導致微型爆量,請完成先前的步驟。在步驟 5 中,將 VolumeReadBytes、VolumeWriteBytes 和 VolumeIdleTime 替換為 VolumeReadOps、VolumeWriteOps 和 VolumeIdleTime。
使用作業系統層級工具來確認微型爆量
即使 VolumeIdleTime 較低,EBS 磁碟區也可能經歷微型爆量。對於 VolumeIdleTime 較低的磁碟區,請使用具有精細樣本收集的作業系統層級工具,以更有效地識別工作負載是否經歷微型爆量。
Linux
若要以一秒的精度報告所有已裝載磁碟區的 I/O 統計資料,請執行 iostat 命令:
iostat -xdmzt 1
iostat 工具屬於 sysstat 套件。如果您找不到 iostat 命令,則請執行下列命令,在 Amazon Linux Application Machine Images (AMI) 上安裝 sysstat:
sudo yum install sysstat -y
如需詳細資訊,請參閱 Linux 手冊頁網站上的 iostat(1)。
若要判斷是否達到了輸送量配額,請檢閱輸出中的 rMBps 和 wMBps。如果 rMBps + wMBps 大於磁碟區的輸送量上限,則表示磁碟區發生了微型爆量。
若要判斷您是否達到了 IOPS 配額,請檢閱輸出中的 rps 和 wps。如果 rps + wps 大於磁碟區的 IOPS 上限,則表示磁碟區發生了微型爆量。
Windows
在 Windows 效能監視器中執行 perfmon 命令。如需詳細資訊,請參閱判斷 IOPS 和輸送量要求。
變更磁碟區大小或類型以調整您的應用程式,並防止微型爆量
微型爆量可能會導致應用程式出現 I/O 限流或 I/O 延遲。為了防止此問題,請調整磁碟區的類型與大小,使其即使在發生微型爆量時,也能支援您所需的 IOPS 和輸送量。如需詳細資訊,請參閱 Amazon EBS 磁碟區類型。執行個體可以推送至所有已連接 EBS 磁碟區的 IOPS 和輸送量都有上限。
最佳做法是根據工作負載進行磁碟區基準效能測試,以在測試環境中確定哪些磁碟區類型能夠安全地滿足您的工作負載。