infra(macmini): bump squeezed container memory limits

Mac Mini was running at 99% memory pressure with 8.6 GB swap active —
load was OK but every cold-container request was paying disk-I/O for
swapped pages. Container observations:

  redis      190/192 MB (99 %)  — close to OOM, hot keys evicting
  victoria   227/256 MB (89 %)  — constant GC pressure
  glitchtip  232/256 MB (91 %)
  umami      223/256 MB (87 %)

Each bumped to 384 MB, total +512 MB reservation in the Colima VM.
Headroom for that comes from stopping the Pelias stack (~3 GB freed)
in the same change-window.

Redis additionally gets `--maxmemory 320mb --maxmemory-policy allkeys-lru`
so the daemon evicts its own LRU keys at ~80 % of mem_limit instead of
letting the kernel OOM-kill the whole container. Safe for our usage —
Redis only holds rate-limit counters + sync hot-paths, no critical state.

Pelias stays stopped pending a migration to mana-gpu; mana-geocoding
will need a Nominatim fallback before the migration so the Places
module's address lookup keeps working.
This commit is contained in:
Till JS 2026-04-28 15:02:38 +02:00
parent 0c30a16eb5
commit 537719032e

View file

@ -122,8 +122,13 @@ services:
image: redis:7-alpine
container_name: mana-infra-redis
restart: always
mem_limit: 192m
command: redis-server --requirepass ${REDIS_PASSWORD:-redis123}
mem_limit: 384m
# maxmemory ~80% of mem_limit so Redis evicts before the kernel OOM-kills.
# allkeys-lru drops least-recently-used keys when full — safe for our
# cache-style usage (rate-limit counters, sync hot-paths, no critical state).
command:
redis-server --requirepass ${REDIS_PASSWORD:-redis123} --maxmemory 320mb
--maxmemory-policy allkeys-lru
volumes:
- redis_data:/data
ports:
@ -1284,7 +1289,7 @@ services:
image: ghcr.io/umami-software/umami:postgresql-v2.18.0
container_name: mana-mon-umami
restart: always
mem_limit: 256m
mem_limit: 384m
depends_on:
postgres:
condition: service_healthy
@ -1310,7 +1315,7 @@ services:
image: victoriametrics/victoria-metrics:v1.99.0
container_name: mana-mon-victoria
restart: always
mem_limit: 256m
mem_limit: 384m
# Mount the host config dir read-only and point promscrape directly at it,
# so edits to docker/prometheus/prometheus.yml are picked up by POST /-/reload
# without a container restart. The previous setup baked a copy into
@ -1629,7 +1634,7 @@ services:
image: glitchtip/glitchtip:latest
container_name: mana-mon-glitchtip
restart: always
mem_limit: 256m
mem_limit: 384m
environment:
DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD:-mana123}@postgres:5432/glitchtip
REDIS_URL: redis://:${REDIS_PASSWORD:-redis123}@redis:6379/1