Ana içeriğe geç

Veritabanı Bağlantı Sorunları

Sorunun Belirtileri

uyarı

Veritabanı bağlantı sorunları genellikle aşağıdaki belirtilerle kendini gösterir:

  • API isteklerinde zaman aşımı hataları
  • Connection refused veya Connection timeout hataları
  • Veritabanı sorgularının başarısız olması
  • Yüksek sayıda connection pool hatası
  • Pod'ların veritabanına bağlanamaması

Sorunun Nedenleri

Veritabanı bağlantı sorunları genellikle şu faktörlerden kaynaklanabilir:

  • Ağ Bağlantısı Sorunları: Pod'ların veritabanına erişememesi
  • Connection Pool Tükenmesi: Maksimum connection sayısına ulaşılması
  • Veritabanı Sunucu Sorunları: Veritabanı sunucusunun yanıt vermemesi
  • Yanlış Bağlantı Ayarları: Hatalı host, port veya credentials
  • Firewall Kuralları: Ağ güvenlik kurallarının bağlantıyı engellemesi
  • DNS Çözümleme Sorunları: Veritabanı host adının çözülememesi

Tespit Yöntemleri

1. Log Analizi

Log Dosyalarını Kontrol Et

Veritabanı bağlantı hatalarını log dosyalarında arayın:

kubectl logs <pod-name> | grep -i "connection"
kubectl logs <pod-name> | grep -i "database"
kubectl logs <pod-name> | grep -i "timeout"

2. Bağlantı Testi

Pod'a Bağlan

Pod içinden veritabanı bağlantısını test edin:

# Pod'a bağlanma
kubectl exec -it <pod-name> -- /bin/bash

# Veritabanı bağlantısını test etme
telnet <database-host> <database-port>

3. Connection Pool Metrikleri

bilgi

Connection pool metriklerini izleyin:

  • Aktif connection sayısı
  • Bekleyen connection sayısı
  • Connection timeout sayısı
  • Connection pool kullanım yüzdesi

Çözüm Önerileri

1. Bağlantı Ayarlarını Kontrol Etme

Veritabanı bağlantı ayarlarını kontrol edin:

  • Host: Veritabanı sunucu adresi doğru mu?
  • Port: Port numarası doğru mu?
  • Database Name: Veritabanı adı doğru mu?
  • Username/Password: Kimlik bilgileri doğru mu?
  • Connection String: Connection string formatı doğru mu?

2. Connection Pool Ayarlarını Optimize Etme

bilgi

Connection pool ayarlarını optimize edin:

# application.yml veya environment variables
spring:
datasource:
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
not

Öneriler:

  • maximum-pool-size: Maksimum connection sayısını ayarlayın
  • minimum-idle: Minimum idle connection sayısını belirleyin
  • connection-timeout: Bağlantı timeout süresini ayarlayın
  • idle-timeout: Idle connection'ların kapatılma süresini belirleyin

3. Ağ Bağlantısını Kontrol Etme

Ağ bağlantısını kontrol edin:

# DNS çözümleme testi
nslookup <database-host>

# Port erişilebilirliği testi
nc -zv <database-host> <database-port>

# Network policy kontrolü
kubectl get networkpolicies

4. Veritabanı Sunucu Durumunu Kontrol Etme

Veritabanı sunucu durumunu kontrol edin:

  • Veritabanı sunucusu çalışıyor mu?
  • Yeterli kaynak (CPU, RAM) var mı?
  • Maksimum connection limit'ine ulaşılmış mı?
  • Veritabanı log'larında hata var mı?

5. Firewall Kurallarını Kontrol Etme

Firewall kurallarını kontrol edin:

  • Pod'ların veritabanı port'una erişimi var mı?
  • Network policy'ler bağlantıyı engelliyor mu?
  • Security group kuralları doğru mu?

6. DNS Çözümleme Sorunlarını Çözme

DNS çözümleme sorunlarını çözün:

  • CoreDNS pod'ları çalışıyor mu?
  • DNS ayarları doğru mu?
  • Service discovery düzgün çalışıyor mu?

Önleyici Tedbirler

1. Connection Pool Monitoring

  • Connection pool metriklerini düzenli izleyin
  • Alert'ler kurarak erken uyarı alın
  • Connection pool kullanımını optimize edin

2. Health Check'ler

  • Veritabanı health check'lerini yapılandırın
  • Liveness ve readiness probe'ları ayarlayın
  • Otomatik failover mekanizmaları kurun

3. Connection Retry Mekanizması

  • Connection retry mekanizması ekleyin
  • Exponential backoff kullanın
  • Maksimum retry sayısını belirleyin

İlgili Kaynaklar