Перейти до змісту

Обмеження використання ЦП та пам'яті

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