Ir para o conteúdo

Limitar o uso de CPU e memória

Na configuração recomendada baseada em docker, o Gramps Web usa Gunicorn para servir o backend e Celery para tarefas em segundo plano. Em ambos os casos, vários processos de trabalho podem ser executados em paralelo, o que torna a aplicação mais responsiva do ponto de vista do usuário. No entanto, aumentar o número de trabalhadores também aumenta a quantidade de RAM utilizada (mesmo quando a aplicação está ociosa) e permitir que as solicitações sejam processadas em paralelo pode levar a um alto uso de CPU (em particular quando muitos usuários estão usando a aplicação simultaneamente). Tanto o Gunicorn quanto o Celery permitem limitar o número de trabalhadores paralelos.

Obter informações sobre seu sistema

No Linux, você pode verificar o número de núcleos disponíveis em seu sistema com o seguinte comando:

lscpu | grep CPU

Para ver quanto de memória e espaço de swap você tem disponível, use

free -h

Limitando o número de trabalhadores do Gunicorn

A maneira mais fácil de definir o número de trabalhadores do Gunicorn ao usar a imagem docker padrão do Gramps Web é definir a variável de ambiente GUNICORN_NUM_WORKERS, por exemplo, declarando-a no arquivo docker-compose.yml, sob "environment".

services:
  grampsweb:
    environment:
      GUNICORN_NUM_WORKERS: 2

Consulte a documentação do Gunicorn para decidir sobre o número ideal de trabalhadores.

Limitando o número de trabalhadores do Celery

Para definir o número de trabalhadores do Celery, adapte a configuração concurrency no arquivo Docker compose:

  grampsweb_celery:
    command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2

Consulte a documentação do Celery para decidir sobre o número ideal de trabalhadores.

Info

Se a flag concurrency for omitida (o que era o caso na documentação do Gramps Web até a v2.5.0), ela assume o número de núcleos de CPU disponíveis no sistema, o que pode consumir uma quantidade substancial de memória.