Hetzner & Coolify: Sunucu Yavaşlığı Analizi ve Docker Resource Limit Çözümü

Hetzner Cloud üzerinde barınan ve Coolify ile yönetilen sunucumda son zamanlarda ciddi yavaşlamalar, SSH bağlantısında takılmalar ve Coolify panelinin kilitlenmesi gibi sorunlar yaşamaya başladım.

Bu yazıda; sorunu nokta atışı nasıl tespit ettiğimi, disk ve RAM testlerini nasıl yorumladığımı ve Coolify üzerinde Docker konteynerlerini doğru şekilde nasıl limitleyerek sunucuyu kurtardığımı adım adım anlatacağım.

## 1. Sorunun Tespiti: “Sunucu Neden Kasıyor?”

Sunucuya terminalden bağlandığımda bile harflerin ekrana geç düştüğünü fark ettim. Genellikle üç şüpheli vardır: **CPU, RAM veya Disk.**

### Adım 1: Kaynak Tüketimi (htop)
İlk olarak `htop` ile anlık duruma baktım:

`htop`

* **Gözlem:** İşlemci yükü (Load Average) `0.25` civarındaydı, yani CPU darboğazı yoktu.
* **Sorun:** RAM kullanımı sınıra dayanmamıştı ancak **SWAP (Sanal Bellek)** kullanımı yüksekti. Sistem, RAM’de yer açmak için verileri diske yazmaya başlamıştı (Swap in/out). Bu işlem, NVMe disk bile olsa RAM’e göre çok yavaş olduğu için sistemi kilitliyordu.

### Adım 2: Disk Performans Testi (I/O)
Hetzner disklerinde fiziksel bir yavaşlık olup olmadığını test etmek için şu komutu kullandım:

`dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct`

* **Sonuç:** `1.1 GB/s` yazma hızı.
* **Yorum:** Disk performansı mükemmel. Sorun donanımda değil, yazılımın kaynak yönetiminde.

### Adım 3: Suçluyu Bulmak (Docker Stats)
Coolify kullandığım için hangi uygulamanın kaynakları sömürdüğünü bulmak adına Docker istatistiklerine baktım:

`docker stats –no-stream –format “table {{.Name}}\t{{.MemPerc}}\t{{.MemUsage}}”`

**Tespit:**
Kendi geliştirdiğim bir “Face Swap” (AI/Python) uygulamasının tek başına **~2 GB RAM** tükettiğini gördüm. Uygulama ani yüklenmelerde (spike) RAM’i dolduruyor, sunucu da yer açmak için Coolify panelinin servislerini Swap’e (diske) atıyordu. Paneldeki yavaşlığın sebebi buydu.

## 2. Çözüm: Coolify ile Kaynak Limitleme (Resource Limits)

Uygulamanın sunucunun tamamını (8GB RAM) işgal etmesini engellemek için ona bir sınır çizmem gerekiyordu. Coolify panelinde **Project > Settings > Resource Limits** kısmına gittim.

Ancak burada bazı Docker hatalarıyla karşılaştım. İşte doğru yapılandırma mantığı:

### Karşılaşılan Hatalar

**Hata 1:** `Minimum memory limit allowed is 6MB`
* **Hatalı Giriş:** `2300`
* **Sebep:** Birim yazmadığım için Docker bunu 2300 Bayt sandı.
* **Çözüm:** Sonuna mutlaka **MB** eklenmeli (`2300MB`).

**Hata 2:** `Minimum memoryswap limit should be larger than memory limit`
* **Hatalı Giriş:** Memory: `2300MB`, Swap: `1024MB`
* **Sebep:** Docker’da Swap Limiti kutusuna sadece “ekstra swap miktarını” değil, **(RAM + SWAP)** toplamını yazmak gerekiyor.

### Uygulanan İdeal Ayarlar (Çözüm)

Sunucuyu rahatlatan ve hatasız çalışan yapılandırma şu şekilde oldu:

* **Limit CPUs:** `1.5`
* *Uygulama sunucunun tüm çekirdeklerini sömüremesin, 1.5 çekirdek ona yetsin.*
* **CPU Weight:** `1024`
* **Maximum Memory Limit:** `2300MB`
* *Uygulamaya ayrılan tavan RAM miktarı.*
* **Maximum Swap Limit:** `3324MB`
* *Hesaplama:* `2300 MB` (RAM) + `1024 MB` (İstediğim Swap) = **3324 MB**.

## 3. Sonuç

Ayarları kaydedip **Deploy** ettikten sonra terminalden tekrar kontrol ettim:

`docker stats –no-stream –format “table {{.Name}}\t{{.MemUsage}}\t{{.MemUsage}}”`

* **Öncesi:** `LIMIT: 7.57GiB` (Sunucunun tamamına erişebiliyordu)
* **Sonrası:** `LIMIT: 2.24GiB` (Artık kafeslendi!)

Artık bu uygulama bellek sızıntısı yapsa bile sadece kendisi yeniden başlıyor (restart), sunucunun geri kalanı ve Coolify paneli stabil çalışmaya devam ediyor.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir