Обмеження використання ЦП та пам'яті¶
У рекомендованій конфігурації на базі Docker, Gramps Web використовує Gunicorn для обслуговування бекенду та Celery для фонових завдань. У обох випадках кілька робочих процесів можуть працювати паралельно, що робить застосунок більш чутливим з точки зору користувача. Однак збільшення кількості робочих процесів також збільшує обсяг використаної оперативної пам'яті (навіть коли застосунок неактивний) і дозволяючи обробляти запити паралельно може призвести до високого використання ЦП (зокрема, коли багато користувачів використовують застосунок одночасно). Як 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), він
за замовчуванням дорівнює кількості ядер ЦП, доступних у системі, що може споживати значну кількість пам'яті.