Odoo y los problemas de performance

Gustavo Orrillo
- 15/10/2018

Odoo al igual que cualquier otro sistema puede tener problemas de performance. Esa es la realidad. Por más que uno instale sistemas en hardwares extremadamente enormes y potentes, igualmente puede llegar a tener problemas de rendimiento. Lo mismo sucede con Odoo agravado por el hecho que dichos issues se pueden originar en diferentes ambientes: hardware pequeño, problemas de red, PostgreSQL y código.

Ahora, más alla del hardware quiero escribir sobre las areas que tuve que trabajar. La primera es la configuración de PostgreSQL. La base de datos de por sí es muy rendidora. Pero se debe tener en cuenta que out-of-the-box la configuración de la misma es muy conservadora. Lo que causa una degradación en el rendimiento de la misma. Es por ello que lo primero que se debe hacer es modificar los parametros del archivo postgres.conf para que el mismo refleje la realidad de memoria que tiene el server en el cual está corriendo la base de datos. Un buen lugar donde empezar es en el wiki de la página de PostgreSQL.

Otro punto a tener en cuenta es la performance de las escrituras en la base de datos y como se ven afectadas por la configuración de la base de datos. Aquí deberán hacer sus investigaciones y modificar los parámetros relacionados con los checkpoints. Por otra parte, no hay que olvidarse de ejecutar periodicamente un VACUUM, que siempre ayuda con la base de datos.

En definitiva, si uno tiene más de diez usuarios y la base de datos ya supera 1 Gigabyte de tamaño (algo demasiado común); hay que prestarle atención a la base de datos. Si nota que la performance de su sistema se degrada, y no comprende como administrar la base de datos, mi consejo es que contrate un administrador de PostgreSQL para hacer el tuning correspondiente.

Por otra parte, hay que ver en que parte de Odoo se tienen problemas de performance. Por ejemplo, ejecutar transacciones con Odoo es rápido pero realizar actualizaciones masivas de datos en Odoo, no es una buena idea debido a que su performance no es precisamente buena. Esto se debe a que el ORM de Odoo no se encuentra optimizado para operaciones masivas de datos. Por ejemplo, pruebe creando 10,000 nros de serie. Y despues me cuenta lo que tarda el sistema en agregar diez números de serie más. En este punto, lo que hay que hacer requiere de la ayuda de desarrolladores. Y los mismos deberán modificar los módulos correspondientes para que la inserción de datos se realice mediante el SQL en lugar de hacerlo mediante el ORM de Odoo.

Por último puede ser que se susciten problemas de performance con ciertos módulos en particular. En dicho caso se deberá identificar cuales son los módulos que causan el problema y proceder a solucionarlo. No hay grandes secretos al respecto.

Algo más a tener en cuenta es que cada vez que se trabaja en problemas de rendimiento, los problemas se van resolviendo de a uno.