Cuando un Odoo se vuelve lento, la reacción habitual es pedir más CPU. A veces funciona; casi siempre es caro y temporal. Merece la pena dedicar media hora a saber qué se está atascando, porque las causas son pocas y bastante identificables.
1. Los workers mal dimensionados
Es el primer sitio donde mirar. Odoo atiende las peticiones con un número fijo de procesos trabajadores y muchas instalaciones lo dejan como venía: demasiado bajo, y las peticiones hacen cola; demasiado alto, y los procesos compiten por la memoria hasta que el sistema empieza a paginar. Ninguno de los dos extremos se detecta mirando el porcentaje de CPU, que es lo que la gente suele mirar.
2. PostgreSQL con la configuración por defecto
Odoo es, en la práctica, una aplicación de base de datos. Si PostgreSQL está sin ajustar a la memoria disponible, las consultas tardan más de lo que deberían y todo se percibe lento, independientemente de la potencia del servidor.
3. Falta de índices en campos por los que se filtra
Un listado que se filtra a diario por un campo sin índice hace un recorrido completo de la tabla. Con mil registros no se nota; con medio millón, sí. Esto aparece sobre todo en campos personalizados creados sin pensar en cómo se van a consultar después.
4. Código a medida que no trabaja por lotes
Esta es la causa más frecuente en instalaciones con desarrollo propio, y la más invisible desde fuera. Odoo precarga los registros para evitar leer campo a campo. La documentación oficial lo explica con un ejemplo elocuente: recorrer 2.000 registros sin aprovechar la precarga lanza 2.000 consultas a la base de datos; aprovechándola, una sola.
El mismo principio se aplica a la escritura. La guía de rendimiento de Odoo es explícita: «cuando se trabaja con conjuntos de registros, casi siempre es mejor agrupar las operaciones en lote». Un módulo que crea registros de uno en uno dentro de un bucle multiplica el trabajo del servidor por el número de vueltas.
5. Acciones planificadas y adjuntos
Los procesos nocturnos que se solapan, los informes pesados lanzados en horario de oficina y los adjuntos grandes guardados en la base de datos compiten por los mismos recursos que las pantallas de tus usuarios. Es habitual encontrar bases de datos donde la mayor parte del tamaño no son datos de negocio, sino ficheros.
Cómo saber cuál es la tuya
Antes de tocar nada, mide. Odoo incluye un perfilador que registra qué consultas se ejecutan en una petición concreta y cuánto tarda cada una. Con eso, en una tarde se distingue si el problema está en una vista concreta, en un módulo propio o en la infraestructura. Cambiar de servidor sin ese dato es apostar.