DBAtlas · Atlas für Datenbankbetrieb

Connection Storm (zu viele Verbindungen)

Du hast 'too many connections', 'remaining connection slots reserved' oder ORA-00018 erhalten; neue Verbindungen werden abgelehnt. Finde die Quelle, entlaste sofort, behebe es dauerhaft.

Lage messen: Wie viele Verbindungen, und wie viele sind aktiv?

Zuerst Gesamtverbindungen, Limit und Aufteilung aktiv/inaktiv ansehen.

SELECT status, COUNT(*) FROM v$session WHERE type='USER' GROUP BY status;
SELECT name, value FROM v$parameter WHERE name IN ('processes','sessions');
  • Die meisten Verbindungen sind idle / idle in transaction
  • Die meisten sind aktiv; ich muss die Quelle finden

Wer/woher? Verbindungen nach Quelle gruppieren

Meist ist der Pool eines einzelnen Anwendungsservers explodiert oder es gibt ein Connection Leak. Betrachte die Verteilung nach Host/Benutzer/Anwendung.

SELECT client_addr, usename, application_name, count(*) FROM pg_stat_activity GROUP BY 1,2,3 ORDER BY 4 DESC;
  • Eine einzelne Anwendung/ein Host hat die Verbindungen explodieren lassen (Pool)
  • Die Last ist wirklich gestiegen; alle sind legitim und aktiv

Ursache: Anhäufung inaktiver Verbindungen / Leak

Verbindungen werden geöffnet und nie geschlossen oder 'idle in transaction' gelassen; sie belegen Slots umsonst.

Ursache: Anwendungs-Pool ist explodiert

Der Connection Pool eines Anwendungsservers ist unbegrenzt/zu groß oder hat ein Leak. Er erzeugt die Verbindungen.

Ursache: Echter Lastanstieg

Die Verbindungen sind legitim und aktiv; die Kapazität reicht tatsächlich nicht aus.

In DBAtlas öffnen →