🚨 El síntoma clásico
Odoo funciona bien… hasta que:
entran varios usuarios al mismo tiempo
se ejecutan acciones pesadas (facturación, inventario, reportes)
los cron jobs empiezan a correr
Entonces aparecen:
pantallas que tardan en cargar
formularios que “se quedan pensando”
usuarios que culpan al servidor o a Odoo
👉 Pero el problema casi nunca es CPU ni RAM.
🧠 El error más común: pensar en Odoo como una app web normal
Odoo no funciona como una web típica.
Cada request:
pasa por el ORM
abre una transacción
mantiene una conexión activa a PostgreSQL
Con pocos usuarios no pasa nada.
Con muchos usuarios el modelo colapsa.
🔌 Cómo Odoo usa PostgreSQL realmente
Odoo:
mantiene una conexión por worker
cada request puede retener esa conexión durante toda la transacción
no reutiliza conexiones eficientemente
Resultado:
muchas conexiones abiertas
PostgreSQL saturado aunque el CPU esté idle
👉 Aquí explico el detalle técnico:
Cómo Odoo gestiona las conexiones a PostgreSQL
❌ La falsa solución: subir max_connections
Cuando Odoo empieza a fallar, muchos hacen esto:
max_connections = 500
Esto:
NO mejora el rendimiento
aumenta consumo de memoria
empeora el scheduling interno de PostgreSQL
hace el sistema menos estable
👉 Subir conexiones es retrasar el problema, no resolverlo.
🧨 Lo que realmente está pasando
PostgreSQL:
crea un proceso por conexión
asigna memoria por conexión
escala mal con cientos de conexiones
Odoo:
abre demasiadas conexiones
no las suelta rápido
genera contención interna
Resultado:
CPU baja, RAM alta, Odoo lento.
📉 Síntomas claros en producción
Si ves alguno de estos:
errores too many connections
latencia intermitente
Odoo “se arregla” al reiniciar
PostgreSQL con muchos procesos idle
👉 Tu problema es gestión de conexiones.
🧩 La solución real: pooling de conexiones
La solución no es:
más RAM
más CPU
más max_connections
La solución es:
Controlar cuántas conexiones reales llegan a PostgreSQL.
Ahí entra PgBouncer.
🚀 Qué hace PgBouncer por Odoo
PgBouncer:
recibe miles de conexiones lógicas
mantiene pocas conexiones reales
reutiliza conexiones eficientemente
reduce uso de memoria
estabiliza latencia
👉 En el próximo capítulo explicamos qué es PgBouncer y por qué Odoo lo necesita.
🔗 Enlaces relacionados
📌 Conclusión
Si tu Odoo es lento con muchos usuarios:
no es magia
no es “Odoo malo”
no es falta de hardware
Es arquitectura.
Y la arquitectura correcta empieza controlando las conexiones.