跳至內容

如何監控 Amazon RDS Proxy 連線集區並最佳化資料庫連線?

3 分的閱讀內容
0

我想監控 Amazon Relational Database Service (Amazon RDS) Proxy 連線集區,並最佳化我的資料庫連線。

解決方法

監控 RDS Proxy 和目標 RDS 資料庫的指標

請完成以下步驟:

  1. 開啟 Amazon CloudWatch console (Amazon CloudWatch 主控台)。
  2. 在導覽窗格中,選擇 Metrics (指標),然後選擇 All Metrics (所有指標)。
  3. Browse (瀏覽) 索引標籤上,選擇 RDS,然後選擇 Per-Proxy Metrics (每個 Proxy 的指標)。
  4. 搜尋以下指標:
    ClientConnections,用於查看來自您應用程式的傳入連線數。
    MaxDatabaseConnectionsAllowed,用於查看 RDS Proxy 允許的資料庫連線上限。
    DatabaseConnections,用於查看 RDS Proxy 對目標資料庫建立的目前連線數。
  5. Browse (瀏覽) 索引標籤上,選擇 RDS,然後選擇 DBInstanceIdentifier
  6. 搜尋 DatabaseConnections 指標,以取得 RDS Proxy 對目標資料庫建立的連線總數,以及對目標資料庫的所有其他連線總數。

最佳實務是以 1 分鐘的精度檢閱這些指標,並使用 Sum (總和) 統計資料,以取得連線使用模式的更多詳細資訊。

檢閱 RDS Proxy 日誌事件

修改 RDS Proxy,以啟用 Enhanced logging (增強型記錄),讓您取得進階詳細資訊,例如正在開啟或關閉的連線。您也可以取得內部作業的詳細資訊,例如釘選與借用。

**注意:**增強型記錄會在 24 小時後自動關閉。

若要檢閱 RDS Proxy 日誌事件,請完成以下步驟:

  1. 開啟 CloudWatch console (CloudWatch 主控台)。
  2. 在導覽窗格中,選擇 Logs (日誌),然後選擇 Log groups (日誌群組)。
  3. 為您的 Proxy 選取日誌群組 /aws/rds/proxy/
  4. Log Streams (日誌串流) 索引標籤上,選取日誌串流以檢視日誌事件。

執行 CloudWatch Logs Insights 查詢以偵測異常

若要存取 CloudWatch Logs Insights 中的查詢編輯器,請完成以下步驟:

  1. 開啟 CloudWatch console (CloudWatch 主控台)。
  2. 在導覽窗格中,選擇 Logs (日誌),然後選擇 Logs Insights

使用查詢編輯器執行以下查詢。在每個查詢中,將 prx-000##### 替換為您的 Proxy ID。

若要取得錯誤或警告,請執行以下查詢:

fields @timestamp, @message  
| sort @timestamp asc  
| filter @logStream like 'prx-000#####'  
| filter @message like / ERROR: / or @message like / WARN: /

若要判斷用戶端連線關閉的原因,請執行以下查詢:

fields @message  
| sort @timestamp asc  
| filter @logStream like 'prx-000#####'  
| filter @message like /The client connection closed/ and @message like /CUSTOMER/  
| parse 'Reason: *' as reason  
| stats count() as reasonCount by reason  
| sort by reasonCount desc  
| limit 20

若要判斷資料庫連線關閉的原因,請執行以下查詢:

fields @message  
| sort @timestamp asc  
| filter @logStream like 'prx-000xxxxx'  
| filter @message like /The database connection closed/ and @message like /CUSTOMER/  
| parse 'Reason: *' as reason  
| stats count() as reasonCount by reason  
| sort by reasonCount desc  
| limit 20

修改 RDS Proxy 連線設定

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

MaxConnectionsPercent

如果您的資料庫已達到最大連線設定,您會收到以下錯誤訊息:

「The database connection closed.Reason: The pool reached the maximum connection setting, and a connection with different properties was required.」

若要解決此問題,請監控 DatabaseConnectionsMaxDatabaseConnectionsAllowed CloudWatch 指標。如果 DatabaseConnections 已接近 MaxDatabaseConnectionsAllowed,請限制傳入流量。或者,執行 modify-db-proxy-target-group AWS CLI 命令或 ModifyDBProxyTargetGroup API 操作,以增加 MaxConnectionsPercent 設定。將 MaxConnectionsPercent 設定為至少比您最近監控到的最大使用量高出 30%。

MaxIdleConnectionsPercent

如果集區中有太多閒置連線,則您會收到以下訊息:

「The database connection closed.Reason: There were too many idle connections in the connection pool.A new slot in the connection pool is now available.」

若要解決此問題,請監控 ClientConnectionsDatabaseConnections CloudWatch 指標。如果 ClientConnections 持續低於 DatabaseConnections,則表示您的目標資料庫有閒置連線。根據預設,MaxIdleConnectionsPercent 設定為 MaxConnectionsPercent 值的 50%。若要修改 MaxIdleConnectionsPercent,請執行 modify-db-proxy-target-group AWS CLI 命令或 ModifyDBProxyTargetGroup API 操作。保持較高比例的閒置資料庫連線為開啟狀態。對於一致性的工作負載,請使用較低的值,以避免閒置資源使用量。

IdleClientTimeout

如果您的資料庫超過用戶端連線閒置逾時時間,您會收到以下訊息:

「The client connection closed.Reason: The idle timeout was exceeded.」

若要移除閒置連線,請降低 IdleClientTimeout。如果您的工作負載會與 Proxy 頻繁建立連線,則請提高 IdleClientTimeout,以免您需要重新建立連線。若要修改 IdleClientTimeout,請執行 modify-db-proxy AWS CLI 命令或 ModifyDBProxy API 操作。

ConnectionBorrowTimeout

如果您收到逾時錯誤,則表示 RDS Proxy 無法建立資料庫連線。

若要將 ConnectionBorrowTimeout 設定為低於連線逾時值的值,請執行 modify-db-proxy-target-group AWS CLI 命令或 ModifyDBProxyTargetGroup API 操作。

手動關閉開啟的連線

如果資料庫連線閒置超過 24 小時,您會收到以下錯誤訊息:

「The database connection closed.Reason: The idle connection exceeded the maximum connection duration.」

您無法修改 RDS Proxy 中閒置資料庫連線的最大存留時間。相反地,最佳實務是手動關閉您的應用程式不需要重複使用的連線。

相關資訊

RDS Proxy 概念和術語

使用 Amazon CloudWatch 監控 RDS Proxy 指標