En el PgIbz hice una presentación de esto:
https://github.com/3manuek/slides/blob/master/2019/pgibz/Pooling%20Performance.pdf

Básicamente, la sumatoria de conexiones activas de cada PgBouncer, no
debería ser mayor a (más o menos) a la capacidad
del endpoint. Esto es varia mucho dependiendo el tipo de complejidad en las
transacciones, latencia y consumo de CPU/IO
por parte de las operaciones. Por lo general, suponiendo transacciones muy
eficientes, sin roundtrip y con un consumo >99% de CPU,
la cantidad de conexiones activas en el endpoint no deberías superar la
cantidad de threads disponibles. Si el consumo, por el contrario
es menor y hay mayor asincronicidad respecto a IO, es posible tener un
número mayor, debido a que el mecanismo del kernel permite
operaciones async en el background.

Yo empezaría por: ver cual es la capacidad de tus endpoints (leader y
replicas) en cuanto a cual es el mejor rendimiento respecto a la
cantidad de transacciones activas y, tratar de inferir el uso de CPU
promedio en tus transacciones.

A mayor cantidad de pooles, hay que limitar el pool_size de cada uno, para
que la sumatoria no supere este "soft threshold".



El lun., 16 sept. 2019 a las 13:50, Edwin Quijada (<
listas_quij...@hotmail.com>) escribió:

> Hola
> Tengo una aplicacion que corre en un server hecha en Java, esta corre
> varias instancias,10, contra el mismo motor de BD, el problema es que cada
> instancia, como maneja un pool de conexiones, abre 10 conexiones al motor y
> 10x10 son 100 conexiones por eso quiero poner un pg_bouncer que maneje
> todas las conexiones hacia el motor que vienen desde las diferentes
> aplicaciones
> Puedo usar el bouncer para esto ?
> No tengo experiencia con pools desde fuera solo desde la app
>
>

-- 
--
Emanuel Calvo
3manuek.com

Reply via email to