Ir al contenido

Qué es PgBouncer y por qué Odoo lo necesita

5 de noviembre de 2025 por
Qué es PgBouncer y por qué Odoo lo necesita
Juan Manuel De Castro
| Todavía no hay comentarios

🧠 El punto de inflexión

Si llegaste hasta aquí, ya sabes que:

  • Odoo abre muchas conexiones

  • PostgreSQL no escala bien con ellas

  • El problema no se soluciona dentro de Odoo

Aquí aparece PgBouncer.


🔌 Qué es PgBouncer (sin marketing)

PgBouncer es un connection pooler para PostgreSQL.

En términos simples:

  • Odoo abre muchas conexiones lógicas

  • PgBouncer mantiene pocas conexiones reales

  • PostgreSQL solo ve lo que puede manejar

PgBouncer se coloca entre Odoo y PostgreSQL:

Odoo → PgBouncer → PostgreSQL


🧩 Qué problema resuelve exactamente

Sin PgBouncer:

  • Cada worker de Odoo abre su conexión

  • PostgreSQL crea un proceso por conexión

  • La memoria se dispara

  • La latencia aumenta

Con PgBouncer:

  • Las conexiones se reutilizan

  • PostgreSQL tiene menos procesos

  • Menos RAM por conexión

  • Menos locks innecesarios

  • Latencia más estable

🔄 Pooling: la idea clave

PgBouncer funciona con un concepto simple pero potente:

Una conexión real puede servir a muchos clientes, pero no al mismo tiempo.

Cuando una transacción termina:

  • la conexión vuelve al pool

  • otro request la reutiliza

  • PostgreSQL nunca ve el pico real de usuarios

⚙️ Por qué Odoo no puede hacer esto solo

Odoo:

  • no tiene pooling interno real

  • asume conexión directa

  • mantiene transacciones abiertas más tiempo del ideal

Además:

  • el ORM no está diseñado para compartir conexiones

  • tocar esto en Odoo rompería compatibilidad

👉 PgBouncer no reemplaza a Odoo, lo complementa.

🧨 El error común: “mi servidor aguanta sin PgBouncer”

Sí, aguanta… hasta que no.

Normalmente pasa esto:

  • pocos usuarios → todo bien

  • crece el uso → latencia intermitente

  • subes max_connections

  • más RAM consumida

  • un día colapsa

PgBouncer no es opcional en producción seria.

🧪 Ejemplo real (simplificado)

Escenario sin PgBouncer:

  • 12 workers

  • 20 usuarios concurrentes

  • 40–60 conexiones reales

  • PostgreSQL con RAM desperdiciada

Con PgBouncer:

  • 12 workers

  • 20 usuarios concurrentes

  • 10–15 conexiones reales

  • PostgreSQL estable

👉 Mismo Odoo, comportamiento totalmente distinto.

🧠 PgBouncer no acelera queries (y eso es bueno)

Importante aclararlo:

  • PgBouncer no hace queries más rápidas

  • no cachea resultados

  • no optimiza SQL

Lo que hace es:

  • evitar el colapso

  • reducir overhead

  • estabilizar el sistema

La velocidad mejora porque el sistema deja de pelear consigo mismo.

⚠️ PgBouncer mal configurado puede empeorar todo

PgBouncer no es magia:

  • mal pool_mode rompe Odoo

  • pool sizes mal calculados generan starvation

  • auth mal hecho rompe conexiones

  • cron jobs pueden bloquear pools

👉 Por eso este curso existe.

Capítulo siguiente ->

Qué es PgBouncer y por qué Odoo lo necesita
Juan Manuel De Castro 5 de noviembre de 2025
Compartir
Etiquetas
Archivo
Iniciar sesión dejar un comentario