En la empresa acceden unos 20 usuarios al servidor de Odoo.
Tengo
Odoo 9 instalado en un servidor de Linode con estas características:
4 GB (RAM)
2 Cores
Cada vez que un usuario abre Odoo en un navegador, le tarda unos 12-15 segundos en cargar completamente la página.
Cuando cargo Odoo en runbot, tan solo me tarda 3-4 segundos.
Acabamos de migrar la máquina a una más potente de Linode, con el doble de ram y de cores:
8 GB (RAM)
4 Cores
Sin embargo, sigue yendo igual de lento todo.
Tenemos PostgreSQL 9.6
Supongo que el problema está en el fichero de configuración, ya que viene migrado de un openErp 7 y hay muchas opciones que seguro que son mejorables o que directamente sobra.
Voy a explicar lo que he ido probando, pero primero copio todo el fichero tal y como está. (odoo-server.conf):
[options]
admin_passwd = {{ODOO_ADMIN_PASS}}
db_user = {{PG_USER}}
db_name = {{PG_DBNAME}}
dbfilter = {{ODOO_DB_FILTER}}
db_password = {{PG_PASS}}
list_db = {{ODOO_LIST_DB}}
addons_path = /mnt/extra-addons/l10n-spain,/mnt/extra-addons,/usr/lib/python2.7/dist-packages/openerp/addons
data_dir = /var/lib/odoo
auto_reload = False
csv_internal_sep = ,
db_maxconn = 64
db_host = {{PG_HOST}}
db_port = {{PG_PORT}}
db_template = template1
pg_path = None
pidfile = None
debug_mode = False
email_from = False
workers = 0
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 60
limit_time_real = 120
log_db = False
log_db_level = warning
log_handler = [':INFO']
log_level = info
logfile = None
logrotate = False
longpolling_port = 8072
max_cron_threads = 2
osv_memory_age_limit = 1.0
osv_memory_count_limit = False
smtp_password = False
smtp_port = 25
smtp_server = localhost
smtp_ssl = False
smtp_user = False
xmlrpc = True
xmlrpc_interface =
xmlrpc_port = 8069
xmlrpcs = True
xmlrpcs_interface =
xmlrpcs_port = 8071
proxy_mode = True
Veo mucho parámetro que seguramente se pueda eliminar o modificar su valor para mejorar el rendimiento.
Hay 2 bloques que seguro se pueden mejorar:
Bloque de workers + limit_XX:
No me queda nada claro cuántos workers tengo que tener (ahora mismo tengo 0) y cuál es el valor idóneo para los distintos "limit"
Según he leído en la documentación, máximo teórico de workers = (número de CPUs * 2) + 1, con lo cual, en mi caso sería 4*2+1=9. Pongo 8.
Para los diferentes "limit", tampoco sé cuánto es lo correcto. Pongo 4 GB para memory_hard y 640 MB para memory_soft, que es lo que he visto en un ejemplo de "Odoo Development Cookbook":
workers = 8
# limit_memory_hard: 4GB
limit_memory_hard = 4294967296
# limit_memory_soft: 640MB
limit_memory_soft = 671088640
Por otra parte, los parámetros "log_XX":
Creo que log_db_level ya no es necesario, aunque no estoy seguro. Los otros logs, supongo que mejorarán en rendimiento si en lugar de registrar INFO, sólo registran los errores:
log_handler = [':ERROR']
log_level = error
Con todo esto, parece que mejora un poco la velocidad de carga, pero no sé si los parámetros se pueden mejorar o eliminar algunos innecesarios.
Un saludo