如何監控 Amazon RDS Proxy 連線集區並最佳化資料庫連線?
我想監控 Amazon Relational Database Service (Amazon RDS) Proxy 連線集區,並最佳化我的資料庫連線。
解決方法
監控 RDS Proxy 和目標 RDS 資料庫的指標
請完成以下步驟:
- 開啟 Amazon CloudWatch console (Amazon CloudWatch 主控台)。
- 在導覽窗格中,選擇 Metrics (指標),然後選擇 All Metrics (所有指標)。
- 在 Browse (瀏覽) 索引標籤上,選擇 RDS,然後選擇 Per-Proxy Metrics (每個 Proxy 的指標)。
- 搜尋以下指標:
ClientConnections,用於查看來自您應用程式的傳入連線數。
MaxDatabaseConnectionsAllowed,用於查看 RDS Proxy 允許的資料庫連線上限。
DatabaseConnections,用於查看 RDS Proxy 對目標資料庫建立的目前連線數。 - 在 Browse (瀏覽) 索引標籤上,選擇 RDS,然後選擇 DBInstanceIdentifier。
- 搜尋 DatabaseConnections 指標,以取得 RDS Proxy 對目標資料庫建立的連線總數,以及對目標資料庫的所有其他連線總數。
最佳實務是以 1 分鐘的精度檢閱這些指標,並使用 Sum (總和) 統計資料,以取得連線使用模式的更多詳細資訊。
檢閱 RDS Proxy 日誌事件
修改 RDS Proxy,以啟用 Enhanced logging (增強型記錄),讓您取得進階詳細資訊,例如正在開啟或關閉的連線。您也可以取得內部作業的詳細資訊,例如釘選與借用。
**注意:**增強型記錄會在 24 小時後自動關閉。
若要檢閱 RDS Proxy 日誌事件,請完成以下步驟:
- 開啟 CloudWatch console (CloudWatch 主控台)。
- 在導覽窗格中,選擇 Logs (日誌),然後選擇 Log groups (日誌群組)。
- 為您的 Proxy 選取日誌群組 /aws/rds/proxy/。
- 在 Log Streams (日誌串流) 索引標籤上,選取日誌串流以檢視日誌事件。
執行 CloudWatch Logs Insights 查詢以偵測異常
若要存取 CloudWatch Logs Insights 中的查詢編輯器,請完成以下步驟:
- 開啟 CloudWatch console (CloudWatch 主控台)。
- 在導覽窗格中,選擇 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.」
若要解決此問題,請監控 DatabaseConnections 與 MaxDatabaseConnectionsAllowed 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.」
若要解決此問題,請監控 ClientConnections 與 DatabaseConnections 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 中閒置資料庫連線的最大存留時間。相反地,最佳實務是手動關閉您的應用程式不需要重複使用的連線。
相關資訊
相關內容
已提問 2 年前
已提問 3 年前
