diff --git a/CHANGELOG.md b/CHANGELOG.md index 436aae8..b698f31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 2026-10-06 (night, held) — gramps-web runs 2 web workers, not 8 (R-806) + +**What runs on a box changed:** gramps-web's environment. **Held on branch `night-held-2026-10-06`**, not `main` tonight. + +- `templates/gramps-web/docker-compose.yml`: `GUNICORN_NUM_WORKERS=2`. Measured on the bench (v25.6.0, the template's 1024M): the image's default of 8 gunicorn workers filled the whole limit (anon 1.06 GB), the kernel killed workers (oom_kill 3 in 9 min) and 4 of 5 requests to :5000 timed out after 15 s — the persistence sweep's "no answer on :5000". With 2 workers: the first answer after 10 s, every request ~2 ms, anon 342 MB, 0 kills. The header's RAM line (~100M / 384M) was stale; it now says ~340M / 1024M. +- Evidence `felhom.eu/documentation/audits/night-burndown-2026-10-06/cat/R-806-red.txt`. + ## 2026-10-06 (night, held) — the persistence gate names an empty bind (R-805) **What runs on a box changed:** nothing. Test tools only. (Held with the night's other catalog commits on `night-held-2026-10-06`.) diff --git a/templates/gramps-web/docker-compose.yml b/templates/gramps-web/docker-compose.yml index a69bbb6..2c5e046 100644 --- a/templates/gramps-web/docker-compose.yml +++ b/templates/gramps-web/docker-compose.yml @@ -1,7 +1,7 @@ # Gramps Web - Családfa készítő és genealógiai szoftver # Domain: ${SUBDOMAIN}.${DOMAIN} # Database: None (file-based) -# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes +# RAM: ~340M with 2 web workers, measured 2026-10-06 (mem_limit: 1024M) | Pi-compatible: Yes # # Environment variables: # DOMAIN - Your domain (e.g., demo-felhom.eu) @@ -18,6 +18,12 @@ services: - TZ=Europe/Budapest - GRAMPSWEB_TREE=Family Tree - GRAMPSWEB_SECRET_KEY=${GRAMPSWEB_SECRET_KEY} + # R-806 (measured 2026-10-06 on the bench): the image starts gunicorn with 8 workers unless GUNICORN_NUM_WORKERS is set. + # Eight workers filled the whole 1024M (anon at the limit), the kernel killed workers (oom_kill 3 in + # 9 min) and most requests to :5000 timed out after 15 s — why the persistence sweep got no answer. + # Two workers: the first answer in 10 s, every request in ~2 ms, anon 342 MB, 0 kills. A household + # tree has one or two people editing at once. + - GUNICORN_NUM_WORKERS=2 volumes: # Storage layout — every path here is named by the image's OWN environment # (docker image inspect ghcr.io/gramps-project/grampsweb:v25.6.0 → Config.Env), and the set