Toolverse
Wszystkie skille

prisma-connection-pool-exhaustion

autor: blader

Rozwiąż problem wyczerpania połączeń Prismy w środowiskach serverless

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Autor
blader
Kategoria
Backend
Wyświetlenia
3

O skillu

Skill diagnozuje i naprawia błędy "Too many connections" oraz wyczerpania puli połączeń Prismy w funkcjach serverless (Vercel, AWS Lambda, Netlify). Stosuj go, gdy widzisz błąd P2024 o timeout'cie połączenia, PostgreSQL "too many connections for role", lub gdy baza działa lokalnie ale pada w produkcji. Problem występuje, ponieważ każdy cold start funkcji serverless tworzy nową instancję klienta Prismy z domyślnie 5 połączeniami — przy wielu równoczesnych żądaniach szybko wyczerpujesz limit bazy danych (zwykle 20-100 połączeń).

Jak używać

  1. Zidentyfikuj symptom: sprawdź logi produkcji pod kątem błędu "P2024: Timed out fetching a new connection from the connection pool", "FATAL: too many connections for role" (PostgreSQL) lub "Too many connections" (MySQL). Jeśli baza działa lokalnie ale pada w produkcji, zwłaszcza podczas skoków ruchu, to znak że wyczerpujesz pulę połączeń.

  2. Sprawdź środowisko: potwierdź że deployujesz na Vercel, AWS Lambda, Netlify Functions lub podobnym hostingu serverless, oraz że używasz Prismy z PostgreSQL, MySQL lub inną bazą wymagającą połączeń.

  3. Wdrażaj connection pooler: zamiast łączyć się bezpośrednio do bazy, użyj usługi poolingu połączeń. Dla Supabase zmień connection string w .env na pooled URL (port 6543 zamiast 5432) z parametrem pgbouncer=true. Dla Neon użyj domyślnego connection stringa z parametrem sslmode=require.

  4. Zaktualizuj zmienną DATABASE_URL: w pliku .env lub w panelu konfiguracji hosta ustaw nowy connection string wskazujący na pooler zamiast bezpośrednio na bazę danych.

  5. Wdróż zmiany: push kod do repozytorium i wyzwól redeploy na platformie hostingowej, aby nowe zmienne środowiskowe weszły w życie.

  6. Monitoruj połączenia: sprawdź dashboard bazy danych aby potwierdzić że liczba aktywnych połączeń spadła poniżej limitu i błędy timeout'u zniknęły.

Podobne skille