General

¡Bienvenido a los foros Aeodoo!

Somos la comunidad de Odoo internacional hispanohablante.
Estos foros son para compartir y debatir dudas técnicas, funcionales y mejores prácticas para Odoo. Recuerda que no están permitidos los insultos, descalificaciones o spam, cualquier conducta reprobable supondrá el baneo del usuario.

0

[Despliegue] - Parámetro limit_memory_hard

Buenos días, abro este hilo para realizaros una consulta acerca del método de despliegue de Odoo, concretamente sobre los umbrales de memoria que se deberían especificar para los parámetros limit_memory_hard y limit_memory_soft.


De acuerdo con la documentación oficial de Odoo disponible en https: //www .odoo.com/documentation/16.0/administration/install/deploy.html#memory-size-calculation lo que Odoo plantea es emplear esta fórmula:


memory size calculation

We consider 20% of the requests are heavy requests, while 80% are simpler ones


A heavy worker, when all computed field are well designed, SQL requests are well designed, … is estimated to consume around 1GB of RAM


A lighter worker, in the same scenario, is estimated to consume around 150MB of RAM


Needed RAM = #worker * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )


Y de hecho plantea este ejemplo de despliegue:


=============================================

Configuration sample

Server with 4 CPU, 8 Thread


60 concurrent users


60 users / 6 = 10 <- theoretical number of worker needed


(4 * 2) + 1 = 9 <- theoretical maximal number of worker


We’ll use 8 workers + 1 for cron. We’ll also use a monitoring system to measure cpu load, and check if it’s between 7 and 7.5 .


RAM = 9 * ((0.8*150) + (0.2*1024)) ~= 3Go RAM for Odoo


in /etc/odoo.conf:


[options]

limit_memory_hard = 1677721600

limit_memory_soft = 629145600

Básicamente lo que nos dice Odoo en su documentación es "te ayudamos a saber cuánta memoria necesita Odoo para funcionar". Pero si atendemos al ejemplo anterior, resultaría que necesitaríamos 3GB de RAM y el valor propuesto para limit_memory_hard es casi la mitad (1,6GB).

=============================================


Por otra parte, si vemos la ayuda de línea de comandos de odoo-bin (documentación disponible en https: // www.odoo.com/documentation/16.0/developer/reference/cli.html#multiprocessing ) tenemos lo siguiente:


=============================================

--limit-memory-hard<limit>

Hard limit on virtual memory, any worker exceeding the limit will be immediately killed without waiting for the end of the current request processing.


Defaults to 2560MiB.

=============================================


De acuerdo con esta documentación, tendríamos que el valor que se defina en este parámetro es por worker.


Concretando mi duda: atendiendo al ejemplo que vemos un poco más arriba, en donde tenemos 9 workers y un valor de 1,6GB en limit_memory_hard, resultaría que potencialmente, en un entorno de uso muy demandante, podríamos llegar a necesitar 9 workers x 1,6GB = 14,4GB RAM. ¿Es esto correcto?

Es decir: la cantidad (en bytes) que debemos poner en limit_memory_hard se refiere a la suma de memoria de TODOS los workers que tengamos configurados, o debe referirse a 1 solo worker?


No sé si he explicado correctamente la duda. ¿Algún técnico de sistemas me podría dar una guía?


Muchas gracias


Ignacio.

Avatar
Descartar
1 Respuesta
1
Avatar
Luis Planes Mur
Mejor respuesta

Hola Ignacio, yo lo entiendo de esta manera.

Según la definición que has puesto del parámetro, el proceso asociado al worker se fulmina si se supera el valor, por tanto entiendo que es un límite para el worker y no para el total.

Añado esta nota: v15,16
En el código pone claramente que es por worker.

https://github.com/odoo/odoo/blob/8d791167ae998f2522b2d3d3d12218ae125d641f/odoo/tools/config.py#L320

Salud2

Avatar
Descartar

Su respuesta

Intente dar una respuesta sustancial. Si desea hacer un comentario sobre la pregunta o la respuesta, utilice la herramienta de comentarios. Recuerde que siempre puede revisar sus respuestas , no es necesario responder dos veces a la misma pregunta. No olvide votar , ayuda a seleccionar las mejores preguntas y respuestas