yandex metrika
Sunucu Neden Aniden Yavaşlar? Gece Yarıları Yaşadığım Panik Anları - Tecrübe Güncesi
Genel

Sunucu Neden Aniden Yavaşlar? Gece Yarıları Yaşadığım Panik Anları

Gece 2’de telefonum çaldı. “Site açılmıyor” diyordu müşterim. Hemen kontrol ettim — sunucu cevap veriyordu ama her sayfa 15-20 saniyede yükleniyordu. SSH ile girdim, baktım ki CPU %98, RAM %95. Ne olmuştu? Bir bot saldırısı mı? Bellek sızıntısı mı? Yanlış bir cron job mı? O gece 4’e kadar sorunu araştırdım ve sonunda buldum. Bu yazıda, sunucunun aniden yavaşlamasının en yaygın nedenlerini ve nasıl teşhis edilip çözüleceğini anlatıyorum.

Sunucu Yavaşlamasının 6 Ana Nedeni

Tecrübelerime göre sunucu yavaşlamasının arkasında şu 6 şeyden biri yatar:

  1. RAM dolmuş veya swap kullanılıyor
  2. CPU aşırı yüklenmiş
  3. Disk I/O darboğazı
  4. Ağ sorunu veya DDoS
  5. Veritabanı sorguları takılmış
  6. Bellek sızıntısı (memory leak)

DigitalOcean’ın 2026 sunucu performans raporuna göre, sunucu yavaşlamalarının %40’ı RAM tükenmesi, %25’i disk I/O, %20’si CPU aşırı yükü ve %15’i ağ sorunlarından kaynaklanıyor (DigitalOcean, “Server Performance Report”, 2026).

sunucu izleme dashboard - CPU RAM ve disk kullanım grafikleri

Teşhis Koymanın 5 Adımı

Sunucunuz yavaşladığında panik yapmayın ve sırayla şu komutları çalıştırın:

Adım 1: CPU Kullanımını Kontrol Edin

top -o %CPU

Hangi süreç CPU’yu yiyor? Ben o gece top komutunda “mysqld” sürecinin %95 CPU kullandığını gördüm. Sorun veritabanıydı.

Adım 2: RAM Durumunu Kontrol Edin

free -h

Used ve available değerlerine bakın. Eğer available değeri çok düşükse ve swap kullanımı yüksekse, RAM sorununuz var demektir. Benim sunucumda RAM %95 doluydu ve swap aktifti — bu da diske yazma/okuma yapıldığı için ekstra yavaşlık demek.

Adım 3: Disk I/O Kontrolü

iostat -x 1 5

Eğer %util sürekli %90’ın üzerindeyse, disk darboğazı yaşıyorsunuz demektir. Bu özellikle HDD kullanan sunucularda yaygın. SSD’lerde daha az görülür ama yine de mümkün.

Adım 4: Disk Doluluk Oranı

df -h

Disk %95’in üzerinde dolarsa, sistem performansı ciddi düşer. Özellikle veritabanları geçici dosya yazamadığı için kilitlenebilir. Ben bir kez log dosyalarının 50 GB yer kapladığını gördüm — disk %99 dolmuştu.

Adım 5: Ağ Trafiğini Kontrol Edin

iftop

Anormal bir trafik akışı var mı? Bir IP’den çok fazla istek geliyorsa DDoS olabilir. Ben iftop ile o gece bir IP’den saniyede 50 MB trafik geldiğini gördüm — bu normal değildi.

Yaşadığım 3 Vaka ve Çözümleri

Vaka 1: MySQL Çökmesi (O Geceki Olay)

Belirti: Her sayfa 15-20 saniyede yükleniyor, CPU %98 mysqld

Neden: WordPress’te bir eklenti, her sayfa yüklemesinde 500+ SQL sorgusu çalıştırıyordu. Sorguların bir kısmı indexesiz tablolardaydı ve full table scan yapıyordu.

Çözüm: Sorunlu eklentiyi devre dışı bıraktım, tablolara index ekledim. Sayfa yüklemesi 2 saniyeye düştü.

Vaka 2: Log Dosyaları Diski Doldurmuş

Belirti: Site bazen açılıyor bazen 500 hatası veriyor, PHP dosya yazamıyor

Neden: Nginx access log dosyası 45 GB olmuş, disk %99 dolu

Çözüm: Logrotate kurulumunu kontrol ettim — çalışmıyormuş. Düzelttim ve log retention policy ekledim. Artık 7 günden eski loglar otomatik siliniyor.

Vaka 3: PHP-FPM Bellek Sızıntısı

Belirti: Zamanla site yavaşlıyor, restart sonrası hızlanıyor ama tekrar yavaşlıyor

Neden: Bir PHP eklentisi bellek sızıntısı yapıyordu. Her istekte küçük miktarda RAM sızdırıyor, zamanla birikerek RAM tüketiyordu.

Çözüm: PHP-FPM process’lerini belirli aralıklarla yeniden başlatmak için pm.max_requests = 500 ayarını ekledim. Her process 500 istekten sonra otomatik yenileniyor.

sunucu sorun giderme süreci - terminal komutları ve teşhis adımları

Sunucu Yavaşlamasını Önlemek — Proaktif Adımlar

Reaktif çözümlerden proaktif önlemlere geçelim:

1. İzleme kurun. Ben Prometheus + Grafana kullanıyorum. CPU, RAM, disk ve ağ metriklerini gerçek zamanlı izliyorum. %80 üstüne çıktığında Telegram’dan bildirim geliyor.

2. Otomatik temizlik. Cron job ile haftalık temizlik yapıyorum:

# Eski logları sil
0 3 * * 0 find /var/log -name "*.log" -mtime +7 -delete
# Geçici dosyaları temizle
0 4 * * 0 find /tmp -type f -mtime +3 -delete

3. Swap alanı oluşturun. RAM bittiğinde swap, sistemi kilitlenmekten kurtarır. Ben 2 GB swap kullanıyorum.

4. PHP opcache kurun. PHP dosyalarını bytecode olarak önbelleğe alıyor ve CPU kullanımını %30-50 düşürüyor.

5. Veritabanı optimizasyonu. MySQL slow query log’u açın ve yavaş sorguları tespit edin. Ben her hafta slow query analizi yapıyorum.

En Kritik 5 Komut — Hızlı Teşhis İçin

Bunları bir yere not alın, ihtiyacınız olduğunda hemen kullanın:

Komut Ne Gösterir
htop Interaktif CPU/RAM görünümü
df -h Disk doluluk oranı
free -h RAM kullanımı ve swap durumu
iotop Hangi süreç disk I/O yapıyor
netstat -tunlp Aktif ağ bağlantıları ve portlar

Bu 5 komut ile 2 dakikada sorunun kaynağını tespit edebilirsiniz. Ben o gece bu komutlarla sorunu buldum ve çözdüm.

Sıkça Sorulan Sorular

Sunucu yavaşladığında ilk ne yapmalıyım?

SSH ile giriş yapın ve htop çalıştırın. Hangi süreç sistemi yoruyor hemen görürsünüz. Büyük ihtimalle tek bir süreç (MySQL, PHP, Nginx) sorumludur.

RAM yetmiyorsa ne yapmalıyım?

Önce gereksiz süreçleri kapatın. Sonra swap ekleyin. Kalıcı çözüm için RAM yükseltme (VPS plan değişikliği) gerekebilir. Benim sunucum 4 GB’dan 8 GB’a çıkarınca RAM sorunu tamamen bitti.

DDoS olup olmadığını nasıl anlarım?

netstat -an | grep :80 | wc -l komutunu çalıştırın. 1000’den fazla aktif bağlantı varsa ve tek bir IP’den geliyorsa DDoS olabilir. Cloudflare Under Attack Mode’u açarak hızlıca engelleyebilirsiniz.

Veritabanı yavaşsa ne yapmalıyım?

MySQL slow query log’unu açın (slow_query_log = 1). Yavaş sorguları tespit edin, gerekli indexleri ekleyin. Ben bir kez 3 dakika süren bir sorguyu index ekleyerek 0.1 saniyeye düşürdüm.

Sunucu izleme için en iyi ücretsiz araç ne?

Netdata en kolayı — tek komutla kuruyor ve web tabanlı güzel bir dashboard sunuyor. Prometheus + Grafana daha profesyonel ama kurulumu zor. Ben ikisini de kullanıyorum farklı sunucularda.

Sonuç

Sunucu yavaşlaması paniklettirir ama çoğu zaman çözülebilir bir sorundur. Kritik olan doğru teşhisi hızlı koyabilmek. Benim yaşadığım o geceki olaydan sonra, izleme ve otomatik uyarı sistemi kurdum. Artık sorun olmadan önce haberim oluyor.

Eğer hâlâ manuel kontrol yapıyorsanız, bir izleme sistemi kurun — ertesi gün değil, bugün. O gece 4’e kadar uyanmak zorunda kalmazsınız.

Türkay

Teknoloji, bilgisayar güvenliği, WordPress ve yapay zeka konularında içerik üreten Tecrübe Güncesi'nin editörü. Linux sistem yönetimi, ağ güvenliği ve web geliştirme alanlarında yılların getirdiği tecrübeye sahip. 2015'ten bu yana Türkçe teknoloji içerikleri üreterek okuyuculara yol göstermeyi hedefliyor.

Bir yanıt yazın

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


Başa dön tuşu