Empiece a escribir a
🚨 El patrón que se repite en producción
Muchos entornos Odoo muestran lo mismo:
CPU casi sin uso
RAM alta o llena
Odoo lento o congelado
usuarios que reportan timeouts
Y la pregunta clásica:
“¿Por qué va lento si el servidor no está al límite?”
La respuesta suele estar en PostgreSQL y las conexiones.
🔒 Síntoma 1 – Locks que bloquean todo
En producción aparecen:
operaciones que no terminan
usuarios esperando sin feedback
crons que se acumulan
En PostgreSQL ves:
SELECT * FROM pg_locks;
Y notas:
locks esperando
locks en cascada
transacciones que no avanzan
👉 Una transacción lenta en Odoo puede bloquear muchas más.
🧠 Por qué pasa esto
Odoo:
agrupa muchas operaciones en una sola transacción
mantiene locks más tiempo del esperado
usa el ORM de forma intensiva
Si además:
hay muchas conexiones abiertas
no hay pooling
👉 el sistema se vuelve frágil.
💤 Síntoma 2 – CPU idle pero sistema lento
Este síntoma confunde mucho.
Ves:
CPU al 10–20 %
load bajo
discos bien
Pero Odoo:
tarda
se congela
hace esperar al usuario
¿Por qué?
los procesos no están trabajando
están esperando recursos
principalmente conexiones o locks
🧠 PostgreSQL esperando a PostgreSQL
Con muchas conexiones:
PostgreSQL pasa más tiempo coordinando procesos
menos tiempo ejecutando queries
más context switching
👉 CPU libre no significa sistema sano.
🧠 Síntoma 3 – RAM llena (aunque “todo esté idle”)
En PostgreSQL:
cada conexión reserva memoria
incluso cuando está idle
Si tienes:
200 conexiones
10 MB por conexión
👉 2 GB de RAM solo en conexiones.
Esto provoca:
presión de memoria
swapping
latencia impredecible
⏱️ Síntoma 4 – Timeouts intermitentes
Odoo empieza a mostrar:
errores de timeout
pantallas que nunca cargan
sesiones que “se caen”
Pero:
no siempre
no todos los usuarios
no siempre lo mismo
Eso es típico de:
pools saturados
conexiones retenidas
transacciones largas
🔍 Cómo confirmar que este es tu problema
En PostgreSQL
SELECT state, count(*) FROM pg_stat_activity GROUP BY state;
Mala señal:
muchas idle
varias idle in transaction
En el sistema
CPU baja
RAM alta
procesos PostgreSQL numerosos
🧩 El patrón completo
Si tienes:
locks
CPU idle
RAM llena
timeouts
👉 No es hardware
👉 No es Odoo “mal hecho”
👉 Es arquitectura de conexiones
🚀 La salida del bucle
Para romper este patrón necesitas:
limitar conexiones reales
reutilizarlas bien
liberar memoria
reducir contención
Eso no se logra:
subiendo max_connections
reiniciando servicios
Se logra con:
PgBouncer
configuración correcta
pools bien dimensionados
🔗 Enlaces relacionados
📌 Conclusión
Estos síntomas no son casualidad.
Son señales claras de que:
PostgreSQL está haciendo malabares con demasiadas conexiones.
La buena noticia:
no necesitas más hardware
necesitas mejor arquitectura
Y eso empieza controlando las conexiones aquí...
Capítulo siguiente ->