Ana içeriğe atla

Sorunun Belirtileri

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

1

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

1

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

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

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
Ö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