Yazılara Dön

2 dk okuma · 11 Ocak 2026

Hetzner Sunucum Neden Kasıyordu?

Hetzner Sunucum Neden Kasıyordu?

Hetzner Cloud üzerinde tuttuğum ve Coolify ile yönettiğim sunucuda son zamanlarda can sıkıcı bir yavaşlama, SSH bağlantılarında donmalar ve panel kilitlenmeleri yaşamaya başladım. Sunucuya terminalden bağlandığımda harflerin bile ekrana gecikmeli düştüğünü görünce, mecburen işi gücü bırakıp terminalde detektifliğe soyunmak zorunda kaldım. İleride aynı krizi yaşarsam sıfırdan düşünmemek için süreci buraya not düşüyorum.

Terminalde Hata Avı: Suçluyu Bulmak

Sunucu kasıyorsa olağan şüpheliler bellidir: CPU, RAM veya Disk. Analize şu sırayla başladım:

1. Kaynak Tüketimi (htop)
Önce htop ile anlık duruma baktım. İşlemci yükü (Load Average) 0.25 civarındaydı, yani CPU rahattı. Ancak RAM tam dolmamasına rağmen SWAP (Sanal Bellek) kullanımı tehlikeli şekilde yüksekti. Sistem, RAM’de yer açmak için verileri diske yazmaya çalışıyor (Swap in/out) ve bu da sistemi boğuyordu.

2. Disk Performans Testi (I/O)
Hetzner disklerinde fiziksel bir arıza var mı diye doğrudan diski test ettim:

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

Sonuç: 1.1 GB/s yazma hızı. Disk performansı mükemmeldi, sorun kesinlikle donanımda değil, benim yazılımlarımdan birindeydi.

3. Docker İstatistikleri
Coolify altındaki hangi konteynerin sistemi sömürdüğünü bulmak için Docker verilerini çektim:

docker stats --no-stream --format "table {{.Name}}\t{{.MemPerc}}\t{{.MemUsage}}"

Suçlu bulundu: Kendi geliştirdiğim “Face Swap” (AI/Python) uygulamasının tek başına ~2 GB RAM sömürdüğünü gördüm. Uygulama ani yüklenmelerde RAM’i dolduruyor, sunucu da panikleyip paneli Swap’e (diske) atıyordu. Kilitlenmenin sebebi buydu.

Çözüm: Docker’ı Kafeslemek ve Saçma Limit Hataları

Uygulamanın 8GB’lık sunucunun tamamını rehin almasını engellemek için Coolify üzerinden (Project > Settings > Resource Limits) konteyneri kafeslemem gerekiyordu. Ancak Docker’ın limit belirleme mantığı oldukça sinir bozucuydu. Karşılaştığım hatalar ve doğruları şöyle:

Hata 1: “Minimum memory limit allowed is 6MB”
Tavan RAM miktarını 2300 olarak girdiğimde hata verdi. Çünkü birim yazmadığım için Docker bunu 2300 Bayt sandı. Sonuna mutlaka 2300MB yazmak gerekiyor.

Hata 2: “Minimum memoryswap limit should be larger than memory limit”
Memory limitine 2300MB, Swap’e ise 1024MB yazdığımda yine hata verdi. Çünkü Docker, Swap kutusuna sadece istediğiniz “ekstra” swap miktarını değil; (RAM + SWAP) toplamını yazmanızı istiyor.

İdeal Yapılandırma Notum

Sunucuyu rahatlatan ve sistemi stabil hale getiren nihai ayarlarımı şöyle sabitledim:

  • Limit CPUs: 1.5 (Uygulama tüm çekirdekleri sömüremesin, 1.5 çekirdek ona yetsin.)
  • CPU Weight: 1024
  • Maximum Memory Limit: 2300MB (Uygulamanın çıkabileceği maksimum RAM)
  • Maximum Swap Limit: 3324MB (2300 MB RAM + İstediğim 1024 MB Swap = 3324 MB toplam limit)

Ayarları Deploy ettikten sonra Docker’ı tekrar kontrol ettiğimde uygulamanın artık sunucunun tamamına değil, sadece 2.24GiB‘lık bir kafese erişebildiğini gördüm. Artık o Python uygulaması bellek sızıntısı yapsa bile sadece kendi kafesinde yeniden başlıyor, sunucum ve Coolify panelim saat gibi çalışmaya devam ediyor.

Bu yazıyı paylaş
TwitterLinkedInFacebook
A

Ali Onur Özdemir

Yazılım Mühendisi

Gündüzleri yazılım, geceleri karavan inşası. 3D baskı, sunucu yönetimi, tiny house ve kendi zihnine dair notlar.