Postgresql

PgBouncer“不允許更多連接(max_client_conn)”

  • November 6, 2018

我正在將 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_connif 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 實時擷取大量數據)。

引用自:https://dba.stackexchange.com/questions/216591