Ограничение использования CPU и памяти¶
В рекомендуемой конфигурации на основе Docker Gramps Web использует Gunicorn для обслуживания бэкенда и Celery для фоновых задач. В обоих случаях несколько рабочих процессов могут выполняться параллельно, что делает приложение более отзывчивым с точки зрения пользователя. Однако увеличение числа рабочих процессов также увеличивает объем используемой оперативной памяти (даже когда приложение не активно) и разрешение обработки запросов параллельно может привести к высокому использованию CPU (в частности, когда многие пользователи используют приложение одновременно). И Gunicorn, и Celery позволяют ограничить количество параллельных рабочих процессов.
Получение информации о вашей системе¶
На Linux вы можете проверить количество доступных ядер на вашей системе с помощью следующей команды:
lscpu | grep CPU
Чтобы увидеть, сколько памяти и пространства подкачки у вас доступно, используйте
free -h
Ограничение количества рабочих процессов Gunicorn¶
Самый простой способ установить количество рабочих процессов Gunicorn при использовании стандартного образа Gramps Web
в Docker — установить переменную окружения GUNICORN_NUM_WORKERS, например, объявив ее
в файле docker-compose.yml,
в разделе "environment".
services:
grampsweb:
environment:
GUNICORN_NUM_WORKERS: 2
Смотрите документацию Gunicorn, чтобы определить идеальное количество рабочих процессов.
Ограничение количества рабочих процессов Celery¶
Чтобы установить количество рабочих процессов Celery, измените настройку concurrency в файле Docker compose:
grampsweb_celery:
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
Смотрите документацию Celery, чтобы определить идеальное количество рабочих процессов.
Info
Если флаг concurrency опущен (что имело место в документации Gramps Web до версии 2.5.0), он
по умолчанию равен количеству доступных ядер CPU на системе, что может потреблять значительное количество памяти.