From 4ab2ef42858df3a8992f70012882c55628f15d6b Mon Sep 17 00:00:00 2001 From: Niek Otten Date: Thu, 23 Jul 2026 15:31:52 +0200 Subject: [PATCH] fix(infra): cap observability containers' memory to protect the e2e browser (refs #123) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit verify-e2e (registration.spec) timed out on the shared CI runner — locator waits failing at different steps across attempt/retry, the signature of memory contention, not a logic bug (this e2e has an OOM history, d5e5fa2). The three observability containers had no memory bound; cap them (tempo/prometheus 400m, grafana 512m — generous vs idle) so they can't starve the app stack + the Playwright chromium. Frees back more headroom than the OTel SDK added. refs #123 --- infra/docker-compose.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/infra/docker-compose.yml b/infra/docker-compose.yml index f854bae..045d24f 100644 --- a/infra/docker-compose.yml +++ b/infra/docker-compose.yml @@ -558,12 +558,16 @@ services: context: ./observability/tempo image: register-referentie/tempo:dev command: ["-config.file=/etc/tempo.yaml"] + # Cap the backplane's footprint so it can't starve the app stack + the Playwright browser on the + # memory-tight CI runner (verify-e2e OOM history, commit d5e5fa2). Generous vs idle (~150M). + mem_limit: 400m networks: [cg] prometheus: build: context: ./observability/prometheus image: register-referentie/prometheus:dev + mem_limit: 400m ports: - "9090:9090" networks: [cg] @@ -572,6 +576,7 @@ services: build: context: ./observability/grafana image: register-referentie/grafana:dev + mem_limit: 512m environment: GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin