如果您的業務情境中,短串連較多或需要頻繁建立和銷毀串連,建議您開啟RDS PostgreSQL的串連池功能,該功能可以協助您有效降低頻繁建立和銷毀串連對執行個體效能的影響,控制資料庫伺服器的負載和資源使用。
背景
PgBouncer是一個開源的資料庫連接池,專為PostgreSQL資料庫而設計。它充當應用程式和資料庫之間的中介層,負責管理資料庫串連並提供串連池功能。
PgBouncer的主要目標是最佳化資料庫連接的效能和資源使用率。當應用程式需要與PostgreSQL資料庫建立串連時,它可以通過串連池複用現有的資料庫連接,避免了頻繁地建立和銷毀串連產生的效能開銷。這種串連複用可以顯著減少資料庫伺服器的負載,提高應用程式的響應速度和並發效能。
應用情境
適用於短串連較多,頻繁建立和銷毀串連的情境。
PgBouncer可以限制最大用戶端串連數和最大空閑時間等。有助於控制資料庫伺服器的負載和資源使用方式,防止惡意或不合理的查詢串連過度佔用系統資源。
前提條件
RDS PostgreSQL執行個體需滿足以下要求:
執行個體大版本為PostgreSQL 11或以上。
執行個體核心小版本為20230530或以上。
說明查看或升級核心小版本請參見升級核心小版本。
暫不支援Babelfish for RDS PostgreSQL執行個體開啟PgBouncer。
暫不支援RDS PostgreSQL Serverless執行個體開啟PgBouncer。
影響
開啟PgBouncer預設會分配新連接埠6432,不會與原連接埠5432衝突,原5432連接埠的直連串連不受影響。
開啟PgBouncer前或開啟PgBouncer後,如果開通SSL鏈路加密(服務端SSL加密或用戶端SSL加密),則PgBouncer也會同步開啟服務端SSL或用戶端SSL,但PgBouncer不支援存取控制ACL (Access Control List)配置為verify-ca或verify-full的串連驗證,也不支援在認證到期前,配置用戶端憑證撤銷檔案。
注意事項
關閉PgBouncer後,將無法再使用PgBouncer連接埠串連執行個體,請在業務程式中將串連連接埠修改為執行個體原連接埠(預設為5432)。
PgBouncer雖然是一個強大的工具,但並不適用於所有情況。在某些特定的應用情境下,例如具有複雜事務、需要資料庫連接狀態跟蹤或需要使用特定PostgreSQL功能的應用程式,可能需要考慮直接連接到資料庫而不使用串連池。
費用
該功能免費。
操作步驟
開啟或關閉串連池
- 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊資料庫連接。
單擊開啟PgBouncer或關閉PgBouncer。
在彈出的對話方塊中,單擊確定。
(可選)開啟PgBouncer後,即可在資料庫連接頁面查看PgBouncer連接埠,預設為6432。您可以單擊修改串連地址,在修改串連地址視窗中,選擇對應地址類型後,修改PgBouncer連接埠。
通過串連池串連RDS PostgreSQL執行個體
開啟PgBouncer後,如果需要通過串連池串連RDS PostgreSQL執行個體,則需要在串連RDS PostgreSQL執行個體時,將串連連接埠替換為PgBouncer連接埠(預設為6432)即可。如何串連RDS PostgreSQL執行個體,請參見串連PostgreSQL執行個體。
修改串連池參數
開啟PgBouncer後,支援通過參數設定功能,修改PgBouncer的相關參數,調整串連池配置(如控制最大用戶端串連數)。如何修改RDS PostgreSQL執行個體參數,請參見設定執行個體參數。
您也可以在系統參數模板中查看PostgreSQL_PgBouncer_預設參數模板(rpg-sys-pgsql-pgbouncer),瞭解更多PgBouncer相關參數資訊。查看方法,請參見查看參數模板。
開啟PgBouncer後才能通過參數設定功能查看和修改PgBouncer參數,關閉PgBouncer後,參數設定中將不顯示PgBouncer參數。
如果您想要通過參數模板來批量修改參數,則必須先開啟PgBouncer,然後再將參數模板應用到RDS PostgreSQL執行個體。
串連池的最大空閑時間預設為10分鐘,暫不支援修改。
支援修改的參數及相關說明如下:
參數名 | 參數類型 | 預設值 | 描述 |
pgbouncer.pool_mode | string | transaction | 串連池模式,指定用戶端在什麼情況下可以重用串連。
|
pgbouncer.default_pool_size | int | 20 | 串連池預設允許串連數。 |
pgbouncer.max_client_conn | int | 100 | 串連池允許的最大用戶端串連數。 |
pgbouncer.min_pool_size | int | 0 | 串連池允許的最小用戶端串連數。 |
pgbouncer.query_wait_timeout | int | 120 | 允許查詢等待執行的最長時間。單位:秒。 如果在此期間未將查詢分配給伺服器,則用戶端將中斷連線。 如果配置為0,則表示禁用。此時用戶端將無限期排隊。 |
pgbouncer.ignore_startup_parameters | string | "extra_float_digits" | 啟動參數,您可以在此參數中指定PgBouncer啟動跟蹤參數,使用英文逗號(,)分隔。 重要 該參數預設值為extra_float_digits,建議您在修改時不要刪除此預設值,因為使用PostgreSQL JDBC串連執行個體時需要在此參數中包含extra_float_digits。 |
pgbouncer.stats_users | string | "" | 允許串連到PgBouncer虛擬庫上運行唯讀查詢的資料庫使用者,使用英文逗號(,)分隔。 |
上述參數的更多解釋,請參見PgBouncer官方文檔。
查看串連池相關監控指標
RDS PostgreSQL支援通過增強監控功能,查看PgBouncer的相關監控指標。增強監控的更多資訊,請參見查看增強監控。
為了更便捷地擷取PgBouncer的監控資訊,開啟PgBouncer後,RDS PostgreSQL將自動在postgres庫下安裝pgbouncer_fdw和dblink外掛程式,該外掛程式暫不支援卸載。
只有開啟串連池功能後,才可以在增強監控中查看串連池的相關監控指標。
PgBouncer監控指標如下:
指標 | 含義 |
db.pgbouncer.client_connections.active | 用戶端活躍串連數。 |
db.pgbouncer.client_connections.waiting | 用戶端等待串連數。 |
db.pgbouncer.server_connections.active | 服務端活躍串連數。 |
db.pgbouncer.server_connections.idle | 服務端空閑串連數。 |
db.pgbouncer.total_pooled_connections | 串連池總串連數。 |
db.pgbouncer.num_pools | 串連池數量。 |
相關OpenAPI
您可以調用ModifyDBInstanceConfig介面為RDS PostgreSQL執行個體開啟或關閉PgBouncer功能。需要配置的參數如下:
參數 | 說明 | 樣本值 |
DBInstanceId | 待開啟或關閉PgBouncer功能的RDS PostgreSQL執行個體ID。 | pgm-**** |
ConfigName | 配置項名稱。 | pgbouncer |
ConfigValue | 配置項取值。
| true |