2017-09-13 18 views
1

我是一個「偶然dba」,所以在這裏爲一個真正的noob問題道歉。我在pool_mode =交易模式中使用pgbouncer。昨天我開始在我的PHP錯誤日誌:如何確定pgbouncer的max_client_conn

沒有更多的連接允許(max_client_conn)

max_client_conn = 150在我的postgresql.conf匹配MAX_CONNECTIONS

所以我的第一個問題是,應該pgbouncer max_client_conn設置等於PostgreSQL的max_connections的,還是我完全誤解這種關係?

我有一個Postgres的實例20個數據庫後面pgbouncer使用默認default_pool_size = 20,所以應該max_client_conn是400? (pool_size * number_of_databases)?

由於

回答

0

https://pgbouncer.github.io/config.html

max_client_conn允許的客戶端連接的最大數目。

default_pool_size每個用戶/數據庫對允許多少個服務器連接。

所以max_client_conn應該是這樣更大然後Postgres的max_connections,不然爲什麼你使用的連接池呢?..

如果你有20個數據庫和default_pool_size設置爲20,你可以讓pgbouncer開400個連接以分貝,所以你需要調整posgtres.conf max_connections 400和設置pgbouncer max_client_conn到水木清華像4000(有每個實際的數據庫連接池平均10個連接)

這個答案只是爲了提供一個例子瞭解設置,而不是作爲對文學的聲明隨隨便便。 (例如,我剛剛看到一個配置:

max_client_conn = 10000 
default_pool_size = 100 
max_db_connections = 100 
max_user_connections = 100 

用於具有兩個數據庫且max_connections設置爲100的羣集)。這裏的邏輯是不同的,同樣也設置了max_db_connections,實際上連接限制是在pgbouncer [database]部分中的每個數據庫單獨設置的。

所以 - 小設置發揮得如何配置相互影響的想法 - 這是「如何確定pgbouncer max_client_conn」最好