> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Veritabanı Bağlantı Sorunları

> Apinizer'da veritabanı bağlantı sorunlarını tespit edebilir, connection pool ayarlarını optimize edebilir, ağ bağlantı sorunlarını çözebilir ve DNS çözümleme sorunlarını yönetebilir.

## Sorunun Belirtileri

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

* 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

<Steps>
  <Step title="Log Dosyalarını Kontrol Et">
    Veritabanı bağlantı hatalarını log dosyalarında arayın:

    ```bash theme={null}
    kubectl logs <pod-name> | grep -i "connection"
    kubectl logs <pod-name> | grep -i "database"
    kubectl logs <pod-name> | grep -i "timeout"
    ```
  </Step>
</Steps>

### 2. Bağlantı Testi

<Steps>
  <Step title="Pod'a Bağlan">
    Pod içinden veritabanı bağlantısını test edin:

    ```bash theme={null}
    # Pod'a bağlanma
    kubectl exec -it <pod-name> -- /bin/bash

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

### 3. Connection Pool Metrikleri

<Info>
  Connection pool metriklerini izleyin:
</Info>

* 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

<Info>
  Connection pool ayarlarını optimize edin:
</Info>

```yaml theme={null}
# application.yml veya environment variables
spring:
  datasource:
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5
      connection-timeout: 30000
      idle-timeout: 600000
      max-lifetime: 1800000
```

<Note>
  **Ö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
</Note>

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

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

```bash theme={null}
# 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

* [Connection Pooling](/tr/operations/yonetici-kilavuzlari/pod-thread-sayisi-periyodik-izleme)
* [Database Query Optimization](/tr/operations/yonetici-kilavuzlari/pod-thread-sayisi-periyodik-izleme)
* [Altyapı Sorunları](/tr/operations/sorun-giderme/kubernetes-docker-containerd-sorunlari)
