DBAtlas · Veritabanı operasyon atlası

Bağlantı fırtınası (too many connections)

'too many connections', 'remaining connection slots reserved', ORA-00018 aldın; yeni bağlantılar reddediliyor. Kaynağı bul, acil rahatlat, kalıcı çöz.

Durumu ölç: kaç bağlantı, ne kadarı aktif?

Önce toplam bağlantı, limit ve aktif/idle dağılımına bak.

SELECT status, COUNT(*) FROM v$session WHERE type='USER' GROUP BY status;
SELECT name, value FROM v$parameter WHERE name IN ('processes','sessions');
  • Çoğu bağlantı idle / idle in transaction
  • Çoğu aktif — kaynağı bulmalıyım

Kim/nereden? Bağlantıları kaynağa göre grupla

Genelde tek bir uygulama sunucusunun pool'u patlamıştır ya da bağlantı sızıntısı vardır. Host/kullanıcı/uygulama bazında dağılıma bak.

SELECT client_addr, usename, application_name, count(*) FROM pg_stat_activity GROUP BY 1,2,3 ORDER BY 4 DESC;
  • Tek bir uygulama/host bağlantıları patlatmış (pool)
  • Yük gerçekten arttı, hepsi meşru ve aktif

Kök neden: Idle bağlantı yığını / sızıntı

Bağlantılar açılıp kapatılmıyor ya da 'idle in transaction' bırakılıyor; slotları boşuna tutuyorlar.

Kök neden: Uygulama pool'u patlamış

Bir uygulama sunucusunun connection pool'u sınırsız/çok büyük ya da sızdırıyor. Bağlantıları o üretiyor.

Kök neden: Gerçek yük artışı

Bağlantılar meşru ve aktif; kapasite gerçekten yetmiyor.

DBAtlas'ta aç →