

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# RDS Proxy 連線考量事項
<a name="rds-proxy-connections"></a>

## 配置連線設定
<a name="rds-proxy-connection-pooling-tuning"></a>

若要調整 RDS Proxy 的連線集區，可以修改以下設定：
+ [IdleClientTimeout](#rds-proxy-connection-pooling-tuning.idleclienttimeout)
+ [MaxConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxconnectionspercent)
+ [MaxIdleConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxidleconnectionspercent)
+ [ConnectionBorrowTimeout](#rds-proxy-connection-pooling-tuning.connectionborrowtimeout)

### IdleClientTimeout
<a name="rds-proxy-connection-pooling-tuning.idleclienttimeout"></a>

您可以指定 Proxy 關閉用戶端連線之前允許的閒置時間長度。預設值為 1,800 秒 (30 分鐘)。

上一個要求完成後若應用程式未在的指定時間內提交新要求，用戶端連線就會被視為*閒置*。基礎資料庫連線保持開啟狀態，並傳回至連線集區。因此，它可供新的用戶端連線使用。如果您希望 Proxy 主動移除過時的連線，則降低閒置用戶端連線逾時。如果您的工作負載會經常與 Proxy 建立連線，則提高閒置用戶端連線逾時，以節省建立連線的成本。

此設定以 RDS 主控台中的 **Idle client connection timeout** (閒置用戶端連線逾時) 欄位，以及 `IdleClientTimeout` 和 API 中的 AWS CLI 設定表示。若要了解如何在 RDS 主控台中變更 **Idle client connection timeout** (閒置用戶端連線逾時) 欄位的值，請參閱 [AWS 管理主控台](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console)。若要了解如何變更 `IdleClientTimeout` 設定的值，請參閱 CLI 命令 [modify-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html) 或 API 操作 [ModifyDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html)。

### MaxConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxconnectionspercent"></a>

您可以限制 RDS Proxy 可以與目標資料庫建立的連線數。需以資料庫的可用最大連線數百分比形式指定限制。此設定以 RDS 主控台中的 **Connection pool maximum connections** (連線集區最大連線數) 欄位，以及 AWS CLI 和 API 中的 `MaxConnectionsPercent` 設定表示。

`MaxConnectionsPercent` 值會以目標群組所使用的 Aurora 資料庫叢集 的 `max_connections` 設定百分比來表示。Proxy 不會事先保留這些連線。此設定可讓 Proxy 在工作負載需要時建立這些連線。

例如，對於 `max_connections` 設定為 1000 且 `MaxConnectionsPercent` 設為 95 的已註冊資料庫目標，RDS Proxy 會將 950 個連線設定為同時連線至該資料庫目標的上限。

工作負載達到允許的資料庫連線數目上限的常見副作用，是會增加整體查詢延遲，以及提高 `DatabaseConnectionsBorrowLatency` 指標。您可以透過比較 `DatabaseConnections` 和 `MaxDatabaseConnectionsAllowed` 指標，來監控目前使用的資料庫連線和允許的總數。

設定此參數時，請注意下列最佳實務：
+ 為工作負載模式的變更提供足夠的連線預留空間。建議將參數設定至少比您最近監控的最大使用量高出 30%。由於 RDS Proxy 會在多個節點之間重新分配資料庫連線配額，因此內部容量變更可能需要至少 30% 的成長空間才能進行其他連線，以避免增加借用延遲。
+ RDS Proxy 會保留特定數量的連線以進行主動監控，以支援快速容錯移轉、流量路由和內部操作。`MaxDatabaseConnectionsAllowed` 指標不包括這些保留的連線。它代表可用於服務工作負載的連線數，並且可以低於從 `MaxConnectionsPercent` 設定衍生的值。

  最低建議 `MaxConnectionsPercent` 值如下：
  + db.t3.small：100
  + db.t3.medium：55
  + db.t3.large：35
  + db.r3.large 或以上：20

  如果多個目標執行個體向 RDS Proxy 註冊，例如具有讀取器節點的 Aurora 叢集，請根據最小註冊的執行個體設定最小值。

若要了解如何在 RDS 主控台中變更 **Connection pool maximum connections** (連線集區最大連線數) 欄位的值，請參閱 [AWS 管理主控台](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console)。若要了解如何變更 `MaxConnectionsPercent` 設定的值，請參閱 CLI 命令 [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) 或 API 操作 [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html)。

**重要**  
如果資料庫叢集屬於已開啟寫入轉送的全域資料庫，請依配置給寫入轉送的配額減少代理的 `MaxConnectionsPercent` 值。寫入轉送配額是在資料庫叢集參數 `aurora_fwd_writer_max_connections_pct` 中設定的。如需寫入轉送的資訊，請參閱 [在 Amazon Aurora 全域資料庫中使用寫入轉送](aurora-global-database-write-forwarding.md)。

 如需資料庫連線數限制的詳細資訊，請參閱[對 Aurora MySQL 資料庫執行個體的連線數上限](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Performance.html#AuroraMySQL.Managing.MaxConnections)和[對 Aurora PostgreSQL 資料庫執行個體的連線數上限](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Managing.html#AuroraPostgreSQL.Managing.MaxConnections)。

### MaxIdleConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxidleconnectionspercent"></a>

您可以控制 RDS Proxy 可在連線集區中保留的閒置資料庫連線數。根據預設，集區中的資料庫連線五分鐘內沒有任何活動時，RDS Proxy 就會將連線視為*閒置*。

`MaxIdleConnectionsPercent` 值會以 RDS 資料庫執行個體目標群組的 `max_connections` 設定百分比來表示。預設值為 `MaxConnectionsPercent` 的 50%，上限為 `MaxConnectionsPercent` 的值。例如，如果 `MaxConnectionsPercent` 為 80，則 `MaxIdleConnectionsPercent` 的預設值為 40。

值大時，Proxy 會將高百分比的閒置資料庫連線維持在開啟狀態。值小時，Proxy 就會關閉高百分比的閒置資料庫連線。如果您的工作負載無法預測，請考慮為 `MaxIdleConnectionsPercent` 設定一個高值。這麼做表示 RDS Proxy 可以因應活動中的突增情況，而無需開啟大量新的資料庫連線。

此設定以 AWS CLI 和 API 中 `DBProxyTargetGroup` 的 `MaxIdleConnectionsPercent` 設定表示。若要了解如何變更 `MaxIdleConnectionsPercent` 設定的值，請參閱 CLI 命令 [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) 或 API 操作 [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html)。

 如需資料庫連線數限制的詳細資訊，請參閱[對 Aurora MySQL 資料庫執行個體的連線數上限](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Performance.html#AuroraMySQL.Managing.MaxConnections)和[對 Aurora PostgreSQL 資料庫執行個體的連線數上限](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Managing.html#AuroraPostgreSQL.Managing.MaxConnections)。

### ConnectionBorrowTimeout
<a name="rds-proxy-connection-pooling-tuning.connectionborrowtimeout"></a>

您可以選擇 RDS Proxy 在傳回逾時錯誤之前，等待連線集區中的資料庫連線變成可用的時間。預設值為 120 秒。此設定適用於連線數達到最大值，因此連線集區中沒有可用的連線時。這也適用於沒有適當的資料庫執行個體可用於處理請求的情況，例如容錯移轉操作進行中時。透過此設定，您可為應用程式設定最佳等待期間，而不必變更應用程式的程式碼中的查詢逾時。

此設定以 RDS 主控台中的 **Connection borrow timeout** (連線借用逾時) 欄位，或者 AWS CLI 或 API 中 `DBProxyTargetGroup` 的 `ConnectionBorrowTimeout` 設定表示。若要了解如何在 RDS 主控台中變更 **Connection borrow timeout** (連線借用逾時) 欄位的值，請參閱 [AWS 管理主控台](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console)。若要了解如何變更 `ConnectionBorrowTimeout` 設定的值，請參閱 CLI 命令 [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) 或 API 操作 [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html)。

## 用戶端與資料庫連線
<a name="rds-proxy-connection-life"></a>

從應用程式到 RDS Proxy 的連線稱為用戶端連線。從 Proxy 到資料庫的連線為資料庫連線。使用 RDS Proxy 時，用戶端連線會在 Proxy 終止，而資料庫連線則是在 RDS Proxy 內管理。

應用程式端連線集區可提供減少應用程式與 RDS Proxy 之間建立重複連線的好處。

在實作應用程式端連線集區之前，請考慮下列組態層面：
+ 用戶端連線生命週期上限：RDS Proxy 會將用戶端連線的生命週期上限強制為 24 小時。此值不可設定。設定連線生命週期上限少於 24 小時的集區，以避免意外的用戶端連線中斷。
+ 用戶端連線閒置逾時：RDS Proxy 會強制執行用戶端連線的閒置時間上限。設定閒置連線逾時值低於 RDS Proxy 用戶端連線閒置逾時設定的集區，以避免意外連線中斷。

在應用程式端連線集區中設定的用戶端連線數目上限不必限制為 RDS Proxy 的 **max\$1connections** 設定。

用戶端連線集區會延長用戶端連線生命週期。如果您的連線遭遇綁定，則集區用戶端連線可能會降低多工效率。在應用程式端連線集區中綁定但閒置的用戶端連線會繼續保留資料庫連線，並防止其他用戶端連線重複使用資料庫連線。檢閱您的 Proxy 日誌，以檢查您的連線是否遭遇綁定。

**注意**  
RDS Proxy 會在不再使用資料庫連線 24 小時後的某個時間，關閉資料庫連線。無論閒置連線數上限設定的值為何，Proxy 都會執行此動作。