Sto utilizzando pgbouncer in modalità transazione & cercando di consentire la chiusura di 500 transazioni attive. Lo scopo è semplicemente quello di sottolineare verificare l'installazioneCome aumentare il throughput della connessione per pgbouncer?
configurazione attuale: [ 'n' clienti ---> 1 pgbouncer ----> 1 Postgres]
mi accorgo che il mio transazioni/secondo (tps) diminuisce considerevolmente quando uso pgbouncer invece di una connessione diretta a postgres.
Per lo stesso set di transazione (via pgbench)
collegamenti diretti => 10k (tps) appx
connessione pgbouncer => 3K (tps) appx
Esiste qualche configurazione in pgbouncer che deve essere ottimizzata per consentire prestazioni migliori?
Capisco che pgbouncer è un'applicazione a thread singolo, ma vorrei ottimizzarla al meglio. seguito è la mia configurazione pgbouncer:
pgbouncer.ini
pool_mode = transaction
server_reset_query =
# Time outs
server_lifetime=6000
server_idle_timeout=0
server_connect_timeout=30
#pool configuration
max_client_conn=10000
default_pool_size=500
pool_size=500
##other
pkt_buf=4096
server_login_retry=2
L'unica applicazione che posso vedere è quello di utilizzare più pgbouncers per puntare allo stesso server db.
UPDATE
durante l'esecuzione del test:
utilizzo della CPU: 30% appx
utilizzo del disco: il 40% appx
Osservazione: molte transazioni in stato di 'inattività'
DETTAGLI DI PROVA:
10 macchina che funge da client che eseguono la richiesta di accensione pgbench sul server DB.
comando: pgbench -h -p 6541 -c 512 -j 16 -f pgbench_SchemaScript.sql -T 360 U Postgres prova
pgbench_SchemaScript.sql
\setrandom delta 0 100000
insert into t1.emplog values(nextval('t1.employeeSeq'),:delta);
1 DB server con pgbouncer installato (16 core, 24 GB di RAM)
Prima di modificare qualsiasi cosa vorrei controllare l'utilizzo della CPU di pgbouncer. 10000 connessioni client sono molte e potrebbero essere troppe per un'applicazione a thread singolo. Anche le 500 connessioni attive sul server PostgreSQL sono molte, è necessario un hardware serio per prestazioni elevate. –
L'utilizzo della CPU per questa casella è di circa il 30% durante l'esecuzione del test. La scatola ha 16 core e 24 GB di RAM. Noto che l'utilizzo del disco è anche intorno al 40%. Durante l'utilizzo di pgbouncer, noto molte transazioni "inattive" e credo che questo stia causando il basso tps, ma non sono sicuro di come evitarli. – jayanth88
Inattivo quando si hanno 10000 client che dovrebbero essere occupati, non va bene. Quali test stai correndo? Tutte le transazioni sono chiuse quando hai finito con un test? In caso contrario, ciò potrebbe causare il ritardo poiché la connessione non è ancora disponibile per un altro client. Sia la cpu che il disco dovrebbero raggiungere il 100% o almeno avvicinarsi al 100%. –