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​