DB Connection Pooling konfigurieren für Production-Last #51

Open
opened 2026-03-30 19:56:55 +00:00 by David · 0 comments
Collaborator

Beschreibung

Database Connection Pooling mit pool_size, max_overflow und Connection-Timeout konfigurieren, um Connection-Exhaustion unter Last zu verhindern.

Hintergrund

database.py:12-16 erstellt die SQLAlchemy-Engine ohne Pool-Konfiguration. Bei parallelen API-Requests und Pipeline-Runs können Connections ausgehen. PostgreSQL hat ein Standard-Limit von 100 Connections — ohne Pooling wird für jeden Request eine neue Connection erstellt und nicht wiederverwendet.

Akzeptanzkriterien

  • pool_size konfigurierbar (Default: 10)
  • max_overflow konfigurierbar (Default: 20)
  • pool_timeout konfigurierbar (Default: 30s)
  • pool_recycle gesetzt (Default: 1800s) — verhindert stale Connections
  • pool_pre_ping aktiviert — erkennt tote Connections vor Nutzung
  • Logging bei Pool-Exhaustion (Warning wenn >80% genutzt)

Technische Hinweise

  • Fix in: backend/database.py:12-16 — Pool-Parameter an create_engine() übergeben
  • Erweitern: backend/config.pyDB_POOL_SIZE, DB_MAX_OVERFLOW, DB_POOL_TIMEOUT
  • Migration nötig: nein

Aufwand: S

## Beschreibung Database Connection Pooling mit `pool_size`, `max_overflow` und Connection-Timeout konfigurieren, um Connection-Exhaustion unter Last zu verhindern. ## Hintergrund `database.py:12-16` erstellt die SQLAlchemy-Engine ohne Pool-Konfiguration. Bei parallelen API-Requests und Pipeline-Runs können Connections ausgehen. PostgreSQL hat ein Standard-Limit von 100 Connections — ohne Pooling wird für jeden Request eine neue Connection erstellt und nicht wiederverwendet. ## Akzeptanzkriterien - [ ] `pool_size` konfigurierbar (Default: 10) - [ ] `max_overflow` konfigurierbar (Default: 20) - [ ] `pool_timeout` konfigurierbar (Default: 30s) - [ ] `pool_recycle` gesetzt (Default: 1800s) — verhindert stale Connections - [ ] `pool_pre_ping` aktiviert — erkennt tote Connections vor Nutzung - [ ] Logging bei Pool-Exhaustion (Warning wenn >80% genutzt) ## Technische Hinweise - Fix in: `backend/database.py:12-16` — Pool-Parameter an `create_engine()` übergeben - Erweitern: `backend/config.py` — `DB_POOL_SIZE`, `DB_MAX_OVERFLOW`, `DB_POOL_TIMEOUT` - Migration nötig: nein ## Aufwand: S
Sign in to join this conversation.
No description provided.