如何對 RDS 資料庫執行個體中的寫入延遲尖峰進行疑難排解?

上次更新日期:2022 年 7 月 14 日

我想要對 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體中的寫入延遲尖峰進行疑難排解。

簡短描述

Amazon CloudWatch 指標 WriteLatency 定義每個磁碟 I/O 操作使用的平均時長。理想情況下,寫入延遲不得超過 10 毫秒。

執行下列操作時,可能會造成資料庫執行個體寫入延遲尖峰:

尖峰也可能是由於資料庫工作負載繁重而造成 IOPS 或輸送量瓶頸所致。

解決方案

對延遲尖峰進行疑難排解

1.    若要對資料庫執行個體產生高讀取或寫入延遲的原因進行疑難排解,請檢查下列 CloudWatch 指標:

  • ReadLatency 和 WriteLatency
  • ReadIOPS 和 WriteIOPS
  • ReadThroughput 和 WriteThroughput
  • DiskQueueDepth
  • BurstBalance (適用於 gp2 儲存)

假設您注意到出現下列一種或多種情況:

  • 延遲值較高。
  • 輸送量和 IOPS 值已達到上限。
  • DiskQueueDepth 的值較高。
  • BurstBalance 的值較低 (適用於 gp2)。

這表示您的 RDS 執行個體工作負載繁重,並且需要更多資源。如需詳細資訊,請參閱如何對 Amazon RDS 執行個體中 IOPS 瓶頸導致的 Amazon EBS 磁碟區延遲進行疑難排解?

若要對造成 IOPS 或輸送量瓶頸的問題進行疑難排解,請執行以下操作:

針對配備一般用途 SSD (gp2) 的 RDS 執行個體,請檢查資料庫執行個體類別和儲存大小。

針對配備佈建 IOPS (io1) 的 RDS 執行個體,請檢查資料庫執行個體類別和定義的佈建 IOPS。

如需詳細資訊,請參閱 DB instance classes (資料庫執行個體類別) 和 mazon EBS–optimized instances (Amazon EBS 最佳化執行個體)。

2.    如果 CloudWatch 指標未指示任何資源限流,請使用增強型監控來檢查讀取 IO/s 和寫入 IO/s。

系統會以 60 秒的間隔記錄 CloudWatch 指標。因此,可能不會記錄每個尖峰或下降。不過,您可以將增強型監控的精細度設定為最多一秒鐘,以擷取資料。增強型監控可擷取 60 秒時間間隔內的任何資源使用率尖峰。如需詳細資訊,請參閱 How can I identify if my EBS volume is micro-bursting and how can I prevent this from happening? (如何確定 EBS 磁碟區是否微型爆量以及如何防止這種情況發生?)

3.    如果上述所有檢查都未指示問題的原因,請檢查 CloudWatch 指標 NetworkReceiveThroughputNetworkTransmitThroughput,以確保網路沒有問題。

減輕延遲載入的影響

從快照還原 RDS 資料庫執行個體時,資料庫執行個體會繼續在後台載入資料。此程序稱為延遲載入。

在需要從快照還原的所有案例中都可能會發生延遲載入,如時間點還原、將單一可用區執行個體轉換為多可用區域執行個體,以及建立新的僅供讀取複本。如果您嘗試存取尚未載入的資料,資料庫執行個體會立即從 Amazon Simple Storage Service (Amazon S3) 下載請求的資料。然後,執行個體會繼續在背景載入資料。如需詳細資訊,請參閲 Amazon EBS 快照。若要協助減輕延遲載入對您需要快速存取之資料表的影響,您可以執行涉及完整資料表掃描的操作,如 SELECT*。這可讓 RDS 從 Amazon S3 下載所有備份的資料表資料。

請遵循最佳實務

在資料庫執行個體中處理高寫入延遲時,請牢記下列最佳實務和因應措施:

  • 確認您有足夠的資源配置給資料庫來執行查詢。使用 RDS 時,配置的資源量取決於執行個體類型。
  • 如果 CloudWatch 指標和增強型監控指標均未指示資源限流,則請使用效能洞察來監控資料庫工作負載。使用效能洞察,您可以識別應用程式發生延遲時,在資料庫中執行的基礎 SQL 查詢。您可以使用此資訊來評估資料庫的負載,並確定進一步的動作。如需詳細資訊,請參閱在 Amazon RDS 上使用績效詳情監控資料庫負載
  • 根據您的使用案例變更 Amazon EBS 磁碟區的大小或類型,以防止微型高載。
  • 若要最佳化資料庫效能,請確認已正確調整您的查詢
  • 如果您要將單一可用區域資料庫執行個體轉換為多可用區域執行個體,請考慮在非營業時間進行。
  • 若要減少多可用區域轉換後延遲載入的影響,請考慮執行下列其中一項操作:
    • 轉換為多可用區域執行個體後,請立即執行手動容錯移轉。
    • 執行完整傾印或僅執行所需查詢,以從資料表中載入所有資料。此程序可協助載入資料,並強制將所有區塊從 S3 推送至新主機。針對 Amazon RDS for PostgreSQL 執行個體,您可以執行 pg_prewarm 命令。
  • 您可以在 RDS 關鍵指標上設定 Amazon CloudWatch 警示,這些警示對於確定 RDS 執行個體中寫入延遲尖峰的原因非常有用。這些指標的範例包括 ReadIOPS、WriteIOPS、ReadThroughput、WriteThroughput、DiskQueueDepth、ReadLatency 和 WriteLatency。您可以使用這些警示,來確認執行個體不會限流。

Amazon RDS 最佳實務

了解 Amazon RDS 和 GP2 的高載效能與基準效能

Modifying a DB instance to be a Multi-AZ DB instance deployment (將資料庫執行個體修改為多可用區域資料庫執行個體部署)

Tutorial: Restore an Amazon RDS DB instance from a DB snapshot (教學:從資料庫快照還原 Amazon RDS 資料庫執行個體)

此文章是否有幫助?


您是否需要帳單或技術支援?