Hay una escena que se repite en demasiadas empresas: el comercial hace clic en "Crear presupuesto", se va a por un café, vuelve y la pantalla sigue cargando. El contable intenta validar una factura y Odoo se queda pensando treinta segundos. El de almacén escanea un producto y el sistema tarda tanto en responder que ya ha escaneado el siguiente sin querer.
Odoo no es lento por naturaleza. De hecho, bien configurado, es bastante rápido. Pero hay un montón de factores que lo pueden convertir en una tortuga. He pasado horas y horas diagnosticando problemas de rendimiento en Odoo, y casi siempre las causas son las mismas. Vamos a verlas.
El servidor: lo barato sale caro
El 50% de los problemas de rendimiento que me encuentro vienen de una cosa muy simple: el servidor no da la talla. Odoo necesita recursos. No es un WordPress que puedas tirar en un hosting compartido de 5 € al mes.
Para una pyme con 5-10 usuarios simultáneos, necesitas al menos:
- 4 GB de RAM (8 GB si usas varias aplicaciones de Odoo)
- 2 vCPUs modernas (no dos núcleos de un Xeon de 2012)
- Disco SSD, no HDD. Esto es importante. Odoo hace muchas operaciones de lectura/escritura y un disco mecánico te lo frena todo.
Si tienes 20-30 usuarios, multiplica por dos. Y si tienes 50 o más, ya necesitas balanceo de carga, réplicas de lectura y una arquitectura más seria.
He visto empresas con 30 usuarios funcionando en un VPS de 20 € al mes y preguntándose por qué Odoo iba lento. Pues porque el servidor estaba ahogado. Invertir 50-100 € más al mes en infraestructura te ahorra cientos de horas de frustración de tu equipo.
PostgreSQL: el motor que casi nadie mira
Odoo corre sobre PostgreSQL. Si PostgreSQL no está bien configurado, Odoo va lento. Así de simple. Y la configuración por defecto de PostgreSQL es conservadora: está pensada para no consumir muchos recursos, no para ir rápido.
Cosas que deberías revisar en tu `postgresql.conf`:
- shared_buffers: ponlo al 25% de la RAM del servidor. Si tienes 8 GB, pon 2 GB. Por defecto suele estar en 128 MB, que es ridículo.
- effective_cache_size: al 50-75% de la RAM. Esto ayuda al planificador de consultas a tomar mejores decisiones.
- work_mem: 16-64 MB. Si tienes consultas complejas, súbelo. Pero con cuidado, que se multiplica por el número de conexiones.
- Índices: PostgreSQL usa índices para encontrar datos rápido. Si tus tablas grandes no tienen los índices adecuados, cada búsqueda es un barrido completo de la tabla. Odoo crea índices automáticamente para sus modelos, pero si tienes campos personalizados que usas en búsquedas frecuentes, necesitas crear índices manualmente.
Y una cosa más: haz mantenimiento regular. Un `VACUUM` y un `ANALYZE` periódicos mantienen las estadísticas actualizadas y el espacio optimizado. Si nunca has hecho un `VACUUM` en tu base de datos de Odoo, ve a hacerlo ahora mismo. Luego sigues leyendo.
Módulos: cuantos más, más lento
Cada módulo que instalas en Odoo añade código que se ejecuta en cada petición. Campos nuevos, validaciones, métodos que se heredan y se extienden. Uno a uno no se nota, pero cuando tienes 50 módulos instalados, el overhead es considerable.
Revisa los módulos que tienes instalados y pregúntate: ¿de verdad necesito este? He visto Odoos con módulos de proyectos, de hojas de cálculo, de encuestas y de firma electrónica instalados... y la empresa ni siquiera usaba esas funciones. Cada módulo extra es lastre.
Y ojo con los módulos de terceros mal programados. Hay módulos en la App Store que son auténticas bombas de relojería: hacen consultas ineficientes, no usan índices, cargan datos que no necesitan. Un solo módulo malo puede tirar abajo el rendimiento de todo Odoo. Si después de instalar un módulo nuevo Odoo empieza a ir lento, ya sabes dónde mirar.
Las personalizaciones que se te van de las manos
Esto me lo encuentro mucho. Una empresa pide un módulo a medida para un informe. El desarrollador lo hace rápido, sin optimizar. El informe funciona, pero cada vez que se ejecuta bloquea la base de datos durante veinte segundos. Con dos usuarios no se nota. Con quince, Odoo se arrastra.
Las personalizaciones mal hechas son la principal causa de lentitud en Odoos que ya tienen unos años. Algunas señales de alarma:
- Métodos que recorren cientos de registros uno a uno en lugar de usar operaciones en lote
- Consultas SQL crudas que no pasan por el ORM y se saltan los índices
- Campos calculados que se recalculan en cada petición en lugar de almacenarse
- Bucles que llaman a
search()owrite()registro a registro en lugar de usarsearch_read()owrite()con lista de IDs
Si sospechas que tus personalizaciones están frenando Odoo, revisa cómo están construidos tus módulos. A veces una tarde de optimización te ahorra meses de sufrimiento.
Y si estás pensando en migrar a una versión nueva de Odoo para mejorar el rendimiento, ten cuidado: una migración mal planificada puede empeorar las cosas. Asegúrate de que el servidor de destino está bien dimensionado antes de mover los datos.
Cosas rápidas que puedes hacer hoy
No todo requiere un desarrollador. Hay ajustes que puedes hacer tú mismo y que se notan bastante:
- Activa el workers mode: si estás usando Odoo con un solo worker, estás desperdiciando recursos. Configura al menos 2-4 workers para que las peticiones se procesen en paralelo.
- Usa Redis para la caché de sesiones: Odoo puede usar Redis para almacenar sesiones y caché. Es mucho más rápido que el sistema de archivos.
- Sirve los estáticos con Nginx: no dejes que Odoo sirva los archivos estáticos (CSS, JS, imágenes). Pon Nginx delante y que los sirva directamente.
- Limpia los logs: Odoo genera muchos logs. Si tienes el nivel de log en DEBUG, te está escribiendo una barbaridad de información a disco en cada petición. Ponlo en INFO o WARNING en producción.
- Revisa los cron jobs: algunos cron jobs de Odoo pueden ser muy pesados. Si tienes uno que se ejecuta cada 5 minutos y tarda 4 en completarse, tienes un problema.
Cuándo necesitas ayuda externa
Si has revisado todo esto y Odoo sigue yendo lento, igual el problema es más profundo. He visto casos de bases de datos con millones de registros en tablas que Odoo no limpia automáticamente (como `mail_message` o `ir_attachment`), configuraciones de red que añaden latencia, o simplemente una arquitectura que se quedó pequeña para el volumen de negocio actual.
Un diagnóstico de rendimiento profesional te puede costar entre 500 y 1.500 €, dependiendo de la complejidad. Pero te aseguro que es una de las mejores inversiones que puedes hacer. Tus empleados dejarán de odiar el ERP y empezarán a usarlo como es debido.
Si tu Odoo va lento y no sabes por dónde empezar, escríbeme y le echo un vistazo.
