Como solucionar problemas de performance en Odoo - PostgreSQL

Gustavo Orrillo
- 16/05/2017

Mucha gente piensa que los problemas de performance en Odoo se solucionan agrandando los servers en los cuales corre el ERP. Y si bien algo de virtud hay en en esa solución, es como demasiado. Agrandar el server debe  ser el último recurso cuando uno debe atacar los problemas de performance de Odoo. 

La mayoría de los problemas de performance en Odoo estan relacionados con la base de datos PostgreSQL, debido a que la misma se encuentra mal configurada. Por default al instalar Odoo, uno instala PostgreSQL, y la instalación de la base de datos se realiza con una  confguración muy conservadora. Por ejemplo no se beneficia de la memoria habitual con la que cuenta un server para fines de cacheo. Solo tocando unos pocos parámetros del archivo de configuración postgresql.conf (como por ejemplo shared_buffers y effective_cache_size) se logra una mejora notable. Igual, lo mejor es seguir la guía de performance de la documentación de Postgresql

Otro punto relacionado es hacer el vacuum de la base de datos. Una vez hablando con un amigo que había trabajado de soporte técnico de Informix, me comentó "PostgreSQL es muy sencillo, solo haces un vacuum y solucionas todos los problemas". Si bien el comentario es bastante simplista, hay mucha razón en sus palabras. Muchos problemas se solucionan con el vacuum. Que es? Basicamente "comprime" la base de datos. Es el viejo "pack" de los DBFs. Lo que hace es borra fisicamente los registros (que pueden ser muchos) "muertos" que existen en la base de datos. 

Por último, hay que instalar pg_stat_statements. Es un módulo contrib para PostgreSQL que logue las estadísticas de cada sentencia SQL que ejecuta el server de la base de datos. Luego con un solo query, no puede conocer cuales son las sentencias que más recursos consumen de la base de datos.

Si bien esto no es una guia, son los pasos iniciales  que uno toma para ver los problemas de perofrmance en un server Odoo. Luego queda analizar los módulos problemáticos, hardware, red, etc.