如果您的業務情境中存在大量短串連或需要頻繁建立和銷毀串連,建議開啟RDS PostgreSQL串連池功能。該功能通過複用資料庫連接,能夠顯著降低此類串連對執行個體效能的影響,並協助您更好地控制資料庫伺服器的負載和資源消耗。
功能簡介
RDS PostgreSQL的串連池功能基於開源組件PgBouncer實現。它作為應用程式和資料庫之間的中介軟體,負責管理和複用資料庫連接。
串連複用:串連池優先嘗試複用現有串連,從而避免了頻繁建立和銷毀串連帶來的效能開銷,顯著降低資料庫伺服器的負載,並提升應用的響應速度與並發處理能力。
資源控制:通過串連池可以限制最大用戶端串連數和最大空閑時間等,有效防止過多串連佔用系統資源。
前提條件
RDS PostgreSQL執行個體需滿足以下要求:
執行個體大版本為PostgreSQL 11或以上。
產品系列為基礎系列和高可用系列。
計費方式為訂用帳戶或隨用隨付。
執行個體核心小版本為20240830或以上,且尾碼不帶
babelfish。說明查看或升級核心小版本請參見升級核心小版本。
計費說明
該功能免費。
注意事項
開啟PgBouncer會分配新的PgBouncer連接埠(預設為6432),原資料庫連接埠(預設為5432)的直連訪問不受影響。關閉PgBouncer後,將無法再通過PgBouncer連接埠訪問執行個體,請確保業務程式已將串連連接埠改回執行個體原資料庫連接埠。
開啟PgBouncer後,系統自動在postgres庫下安裝pgbouncer_fdw和dblink外掛程式以支援查看串連池監控指標,這些外掛程式暫不支援卸載。
為執行個體開通SSL鏈路加密時,PgBouncer也會同步開啟SSL,但不支援將存取控制(ACL,Access Control List)配置為verify-ca或verify-full的串連驗證,也不支援通過用戶端憑證撤銷檔案。
對於包含複雜事務、需要追蹤資料庫串連狀態或使用特定PostgreSQL功能的應用程式,建議直接連接資料庫,而非使用PgBouncer。
串連池的最大空閑時間預設為10分鐘,超過此時間長度的空閑串連將被關閉。此值當前不支援修改。
操作步驟
開啟或關閉串連池
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊資料庫連接。
單擊開啟PgBouncer或關閉PgBouncer。
在彈出的對話方塊中,單擊確定。
開啟後,在資料庫連接頁面可以查看PgBouncer連接埠(預設為6432)。
您可以通過單擊修改串連地址,在修改串連地址視窗中,選擇對應地址類型後,修改PgBouncer連接埠。
通過串連池串連RDS PostgreSQL執行個體
開啟PgBouncer後,在應用程式或用戶端中串連執行個體時,將串連連接埠替換為PgBouncer連接埠(預設為6432)即可。其他串連參數(如地址、使用者名稱、密碼)保持不變,詳細的串連方法請參見串連PostgreSQL執行個體。
修改串連池參數
開啟PgBouncer後,支援通過參數設定功能,修改PgBouncer的相關參數,調整串連池配置(如控制最大用戶端串連數)。
開啟PgBouncer後才能通過參數設定功能查看和修改PgBouncer參數。
如果想要通過參數模板來批量修改參數,則必須先開啟PgBouncer,然後再將參數模板應用到RDS PostgreSQL執行個體。
預設參數模板為:PostgreSQL_PgBouncer_預設參數模板(rpg-sys-pgsql-pgbouncer)。
支援修改的參數及相關說明如下:
參數名 | 參數類型 | 預設值 | 描述 |
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" | 需要串連池忽略的額外參數,多個參數使用英文逗號(,)分隔。 串連池預設僅處理核心參數(client_encoding、datestyle、timezone、standard_conforming_strings),其他參數將導致串連拒絕。如需支援額外參數,請在此處列出,串連池將自動忽略這些參數,以確保串連成功。 重要 添加其他參數時,建議保留extra_float_digits,以相容PostgreSQL JDBC串連。 |
pgbouncer.stats_users | string | "" | 允許串連到串連池虛擬庫並執行唯讀查詢的使用者列表,多個使用者用英文逗號(,)分隔。 |
更多參數說明請參見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 | 串連池數量。 |
相關API
您可以調用ModifyDBInstanceConfig介面為RDS PostgreSQL執行個體開啟或關閉PgBouncer功能。需要配置的參數如下:
參數 | 說明 | 樣本值 |
DBInstanceId | 待開啟或關閉PgBouncer功能的RDS PostgreSQL執行個體ID。 | pgm-**** |
ConfigName | 配置項名稱。 | pgbouncer |
ConfigValue | 配置項取值。
| true |