diff --git a/backend/tests/test_kamal_deploy_config.py b/backend/tests/test_kamal_deploy_config.py index 6790548e..e2596844 100644 --- a/backend/tests/test_kamal_deploy_config.py +++ b/backend/tests/test_kamal_deploy_config.py @@ -91,6 +91,22 @@ def test_prd_postgres_backup_uses_local_mounted_storage(): assert "ENV.fetch('BACKUP_LOCAL_DIR', '/var/backups/btaa-geospatial-api')" in config_text +def test_prd_memory_profile_protects_service_headroom(): + prd_config = _load_deploy_config("config/deploy.prd.yml") + config_text = (REPO_ROOT / "config/deploy.prd.yml").read_text() + + assert prd_config["servers"]["web"]["options"]["memory"] == "5120m" + assert prd_config["servers"]["worker"]["options"]["memory"] == "4096m" + + elasticsearch = prd_config["accessories"]["elasticsearch"] + assert elasticsearch["options"]["memory"] == "8g" + assert elasticsearch["env"]["clear"]["ES_JAVA_OPTS"] == "-Xms4g -Xmx4g" + + redis = prd_config["accessories"]["redis"] + assert redis["options"]["memory"] == "18g" + assert "ENV.fetch('REDIS_MAXMEMORY', '16gb')" in config_text + + def test_appsignal_prd_identity(): prd_env = _load_deploy_config("config/deploy.prd.yml")["env"]["clear"] config_text = (REPO_ROOT / "config/deploy.prd.yml").read_text() diff --git a/config/deploy.prd.yml b/config/deploy.prd.yml index 41702cbb..eb9bc3cc 100644 --- a/config/deploy.prd.yml +++ b/config/deploy.prd.yml @@ -29,7 +29,7 @@ servers: cmd: bash -c "cd /app/backend && exec /opt/venv/bin/celery -A app.tasks.worker worker --loglevel=INFO" options: cpus: 1.75 - memory: 2048m + memory: 4096m cron: hosts: @@ -156,9 +156,18 @@ env: accessories: elasticsearch: + options: + memory: 8g env: clear: ES_JAVA_OPTS: "-Xms4g -Xmx4g" secret: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY + + redis: + options: + memory: 18g + env: + clear: + REDIS_MAXMEMORY: "<%= ENV.fetch('REDIS_MAXMEMORY', '16gb') %>"