Limitar el uso de CPU y memoria¶
En la configuración recomendada basada en Docker, Gramps Web utiliza Gunicorn para servir el backend y Celery para tareas en segundo plano. En ambos casos, se pueden ejecutar varios procesos de trabajo en paralelo, lo que hace que la aplicación sea más receptiva desde la perspectiva del usuario. Sin embargo, aumentar el número de trabajadores también incrementa la cantidad de RAM utilizada (incluso cuando la aplicación está inactiva) y permitir que las solicitudes se procesen en paralelo puede llevar a un alto uso de CPU (en particular cuando muchos usuarios están utilizando la aplicación simultáneamente). Tanto Gunicorn como Celery permiten limitar el número de trabajadores en paralelo.
Obtener información sobre su sistema¶
En Linux, puede verificar el número de núcleos disponibles en su sistema con el siguiente comando:
lscpu | grep CPU
Para ver cuánta memoria y espacio de intercambio tiene disponible, use
free -h
Limitar el número de trabajadores de Gunicorn¶
La forma más sencilla de establecer el número de trabajadores de Gunicorn al usar la imagen de Docker predeterminada de Gramps Web es configurar la variable de entorno GUNICORN_NUM_WORKERS, por ejemplo, declarándola en el archivo docker-compose.yml, bajo "environment".
services:
grampsweb:
environment:
GUNICORN_NUM_WORKERS: 2
Consulte la documentación de Gunicorn para decidir sobre el número ideal de trabajadores.
Limitar el número de trabajadores de Celery¶
Para establecer el número de trabajadores de Celery, adapte la configuración de concurrency en el archivo de Docker compose:
grampsweb_celery:
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
Consulte la documentación de Celery para decidir sobre el número ideal de trabajadores.
Info
Si se omite la opción concurrency (que fue el caso en la documentación de Gramps Web hasta la v2.5.0),
se establece de forma predeterminada en el número de núcleos de CPU disponibles en el sistema, lo que podría consumir una cantidad sustancial de memoria.