限制 CPU 和内存使用¶
在推荐的基于 Docker 的设置中,Gramps Web 使用 Gunicorn 来提供后端服务,并使用 Celery 处理后台任务。在这两种情况下,可以并行运行多个工作进程,这使得应用程序在用户的角度上更加响应。然而,增加工作进程的数量也会增加使用的 RAM 量(即使在应用程序空闲时),并且允许请求并行处理可能导致高 CPU 使用率(尤其是在许多用户同时使用应用程序时)。Gunicorn 和 Celery 都允许限制并行工作进程的数量。
获取系统信息¶
在 Linux 上,您可以使用以下命令检查系统上可用的核心数量:
lscpu | grep CPU
要查看您可用的内存和交换空间,请使用
free -h
限制 Gunicorn 工作进程的数量¶
使用默认的 Gramps Web Docker 镜像时,设置 Gunicorn 工作进程数量的最简单方法是设置环境变量 GUNICORN_NUM_WORKERS,例如通过在 docker-compose.yml 文件中声明它,在 "environment" 下。
services:
grampsweb:
environment:
GUNICORN_NUM_WORKERS: 2
请参阅 Gunicorn 文档 来决定理想的工作进程数量。
限制 Celery 工作进程的数量¶
要设置 Celery 工作进程的数量,请在 Docker compose 文件中调整 concurrency 设置:
grampsweb_celery:
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
请参阅 Celery 文档 来决定理想的工作进程数量。
Info
如果省略 concurrency 标志(在 Gramps Web 文档 v2.5.0 之前的情况),则默认为系统上可用的 CPU 核心数量,这可能会消耗大量内存。