PgBouncer“不允許更多連接(max_client_conn)”
我正在將 PostgreSQL 與 PgBouncer 一起使用,並在我的應用程序中收到以下錯誤:
08P01: 不允許更多連接 (max_client_conn)
pgbouncer.ini 具有以下配置:
max_client_conn = 100 default_pool_size = 20 pool_mode = session
postgresql.conf 有:
max_connections = 100
PostgreSQL 伺服器有 5 個由單個使用者訪問的數據庫。
我的理解是
max_connections
應該等於(default_pool_size * # databases)
,max_client_conn
至少應該是這麼多。我還在 pgbouncer.ini 中看到了default_pool_size
應該等於max_client_conn
if using session pooling 的註釋。所以要解決我遇到的這個錯誤,我應該簡單地設置
default_pool_size = 100
嗎?還是只增加max_client_conn
? 或者是其他東西?
使用 PGBouncer 的目的是讓它匯集到 PG 伺服器的連接。如果你的 PG max_connections = 100 和 PGBouncer max_client_conn = 100 那麼你就沒有匯集任何東西。您應該將您的 PGBouncer max_client_conn 設置為更高的數字,以允許它編組實際的 PG 連接以服務客戶端。我已經看到 max_client_conn 設置為 default_pool_size * # databases * user count * 一些任意數字 (10) 以允許足夠的 PGBouncer 連接來服務所有使用者使用任意 (10) 連接乘數連接的所有數據庫。例如,我有一個帶有一個數據庫的 PG 伺服器,max_connections = 100,PGBouncer default_pool_size 為 20,PGBouncer max_client_conn = 1000。這有效地允許 PGBouncer 將 20 個連接匯集到我的單個數據庫,同時允許我的客戶端 1000 個連接來處理它的數據。(我正在從 Web api 實時擷取大量數據)。