Sunucu Kaynak Kullanımını İzlemenin Önemi ve Temel Kavramlar

Günümüzün yüksek trafikli web uygulamaları ve veri yoğun hizmetleri, sunucu kaynaklarının anlık takibini zorunlu kılıyor. CPU %90’ın üzerine çıktığında yanıt süreleri uzar, RAM yetersizliği ise bellek hatalarına yol açar. Bu tür sorunları erken tespit etmek, ortalama 30‑40% maliyet tasarrufu sağlar ve hizmet kesintilerini önler.
Kaynak izleme, CPU, RAM, disk I/O, ağ trafiği ve süreç (process) yönetimi gibi temel metriklerin sürekli gözlemlenmesi anlamına gelir. Linux tabanlı sunucularda top, htop, vmstat gibi araçlar, Windows ortamında ise Task Manager ve Get‑Process PowerShell komutu yaygın kullanılır. Konteyner ortamlarında docker stats komutu, her bir container’ın kaynak tüketimini gerçek zamanlı gösterir.
Bu makalede, hem yeni başlayanlar hem de deneyimli sistem yöneticileri için adım adım komut örnekleri, çıktıların nasıl yorumlanacağı ve olası sorunların hızlı çözüm yolları sunulacak. Ayrıca, AMD Ryzen VDS sunucular gibi yüksek performanslı platformlarda izleme stratejileri de ele alınacak.
Linux Sunucularda CPU ve Bellek Kullanımını İzleme Komutları
Linux dağıtımları, kaynak takibi için zengin bir komut seti sunar. En temel komut top’tur; bu komut, CPU, RAM, swap ve süreç bilgilerini saniyelik olarak yeniler. top çıktısında “%CPU” sütunu, her bir sürecin işlemci zamanını gösterir ve %100’ün üzerine çıkan değerler, çoklu çekirdekli sistemlerde toplam çekirdek kapasitesinin aşılması anlamına gelir.
Gelişmiş bir görünüm isteyenler htop’u tercih edebilir. htop, renkli grafikler ve süreçleri ağaç yapısında gösterme özelliğiyle, “yüksek CPU tüketen süreçler” sorusuna anında yanıt verir. Örneğin:
htop
RAM kullanımını detaylı incelemek için free -m komutu kullanılabilir. Çıktıdaki “used” ve “available” satırları, sistemin ne kadar bellek kullandığını ve ne kadarının serbest olduğunu MB cinsinden gösterir. Swap kullanımının yüksek olması, fiziksel RAM’in yetersiz olduğunu ve performansın düşebileceğini işaret eder.
Bir diğer kritik araç vmstat 2’dir; bu komut her 2 saniyede bir CPU, bellek, swap, I/O ve sistem çağrısı istatistiklerini listeler. Özellikle “si” ve “so” (swap in/out) değerleri, bellek baskısını gösterir. Aşağıdaki örnek, 5 saniyelik bir izleme periyodu sunar:
vmstat 2 5
Bu komutların çıktıları, Intel i9 VDS sunucular gibi yüksek kapasiteli makinelerde bile, anormalliklerin erken tespiti için kritik öneme sahiptir.
Disk I/O ve Ağ Trafiği İzleme: iostat, iotop ve ifstat
Disk performansı, özellikle veritabanı ve büyük dosya işlemleri yapan uygulamalarda kritik bir faktördür. iostat komutu, cihaz bazında okuma/yazma hızlarını ve bekleme süresini (await) gösterir. Örneğin:
iostat -xz 1 5
Bu komut, her bir saniyede 5 kez genişletilmiş (extended) istatistikleri verir; “%util” sütunu, disk kullanım oranını yüzde olarak gösterir. %80’in üzerindeki değerler, disk darboğazına işaret eder.
Gerçek zamanlı süreç bazlı I/O takibi için iotop tercih edilir. iotop -o sadece I/O yapan süreçleri listeler ve “DISK READ” ve “DISK WRITE” sütunlarıyla anlık tüketimi gösterir.
Ağ trafiği izlemek ise ifstat, sar -n DEV veya nload gibi araçlarla yapılabilir. ifstat 1 komutu, her saniye gelen ve giden paket miktarını (KB/s) gösterir. Yüksek “rx” (receive) ve “tx” (transmit) değerleri, özellikle DDoS saldırılarını erken fark etmek için kullanılabilir.
Aşağıdaki tablo, yaygın izleme araçlarını ve tipik kullanım senaryolarını özetlemektedir.
| Araç | İzlediği Kaynak | En Uygun Senaryo |
|---|---|---|
| top / htop | CPU, RAM, süreçler | Genel performans kontrolü |
| vmstat | CPU, bellek, swap, I/O | Kısa vadeli trend analizi |
| iostat | Disk I/O | Veritabanı ve dosya sunucusu |
| iotop | İşlem bazlı I/O | Yoğun I/O yapan uygulamalar |
| ifstat / nload | Ağ trafiği | Web sunucu ve CDN trafiği |
Bu tablo, hangi aracın hangi ihtiyaca cevap verdiğini hızlıca anlamanıza yardımcı olur.
Windows Sunucularda Kaynak İzleme: PowerShell ve PerfMon

Windows ortamında, GUI tabanlı Performance Monitor (PerfMon) en yaygın araçtır; ancak otomasyon ve uzaktan yönetim için PowerShell komutları daha etkilidir. CPU kullanımını izlemek için:
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 2 -MaxSamples 5
Bu komut, % Processor Time değerini 2 saniyelik aralıklarla 5 kez alır ve ortalama CPU yükünü verir. RAM tüketimini görmek için:
Get-Counter '\Memory\Available MBytes' -SampleInterval 2 -MaxSamples 5
“Available MBytes” değeri düşerse, sistemin bellek baskısı altında olduğu anlaşılır. Disk I/O izlemek için “LogicalDisk” sınıfı kullanılır:
Get-Counter '\LogicalDisk(_Total)\% Disk Time' -SampleInterval 2 -MaxSamples 5
Ağ trafiği için ise “\Network Interface(*)\Bytes Total/sec” counter’ı idealdir. PowerShell script’iyle bu değerleri bir log dosyasına yazdırmak, uzun vadeli trend analizi yapmanıza olanak tanır.
Windows Server’da web hosting paketleri sunan müşterilerinizin performansını izlemek, kaynakların aşırı kullanımını önlemek ve SLA (Service Level Agreement) gereksinimlerini karşılamak için bu komutları düzenli olarak çalıştırmanız önerilir.
Konteyner ve Bulut Ortamlarında İzleme: Docker Stats ve Kubernetes Metrics
Konteynerleştirilmiş uygulamalarda, her bir container’ın CPU ve bellek sınırları (limit) önceden tanımlanır. docker stats komutu, çalışan tüm container’ların gerçek zamanlı kullanımını gösterir. Örneğin:
docker stats --no-stream
Bu komut, “CPU %”, “MEM USAGE / LIMIT” ve “NET I/O” gibi sütunlarla anlık durumu raporlar. Bir container %80’in üzerindeki CPU tüketimine sahipse, ya limit artırılmalı ya da uygulama optimizasyonu yapılmalıdır.
Kubernetes ortamlarında ise kubectl top pods ve kubectl top nodes komutları, pod ve node bazlı kaynak kullanımını listeler. Prometheus ve Grafana entegrasyonu, uzun vadeli metrik toplama ve görselleştirme için standarttır. Bu sayede “CPU throttling” veya “OOMKilled” gibi olaylar anında tespit edilir.
Bulut servis sağlayıcıları (AWS, Azure, GCP) kendi izleme panellerine sahiptir, ancak fiziksel sunucu (dedicated server) gibi on‑premise altyapılarda Docker ve Kubernetes izleme araçlarını kurmak, aynı seviyede görünürlük sağlar.
Kaynak İzleme Otomasyonu ve Alarm Mekanizmaları
Manuel komut çalıştırmak, acil durumlar için yeterli olsa da sürekli izleme ve otomatik uyarı sistemleri, sorunun oluşmadan önce müdahale edilmesini sağlar. Linux’taki cron ile periyodik script’ler oluşturulabilir; örnek bir bash script’i:
#!/bin/bash
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2+$4}')
MEM=$(free -m | awk '/Mem:/ {print $3/$2 * 100}')
if (( $(echo "$CPU > 85.0" | bc -l) )) || (( $(echo "$MEM > 80.0" | bc -l) )); then
echo "Yüksek kaynak kullanımı: CPU=$CPU%, MEM=$MEM%" | mail -s "Sunucu Uyarısı" admin@example.com
fi
Bu script, CPU %85 ve RAM %80 üzerindeyse e‑posta gönderir. Windows ortamında ise “Task Scheduler” ile PowerShell script’i zamanlanabilir. Ayrıca, SNMP veya Webhook entegrasyonları sayesinde Slack, Microsoft Teams gibi iletişim kanallarına anlık bildirim gönderilebilir.
Alarm seviyeleri belirlerken, “kritik” ve “uyarı” gibi iki katman oluşturmak faydalıdır. Kritik alarm, hizmet kesintisine yol açabilecek %95 CPU veya %90 RAM gibi eşiklerde tetiklenirken, uyarı alarmı %75‑%85 aralığında bilgi verir. Bu yaklaşım, gereksiz alarm yorgunluğunu önler.
Gerçek Dünya Senaryosu: E‑ticaret Sitesinde Performans Krizi
Bir e‑ticaret sitesinin kampanya döneminde trafiği %300 artabilir. Bu durumda, CPU %92’ye, RAM %88’e ve disk I/O %95’e ulaşabilir. İzleme komutları sayesinde sorunun kaynağı hızlıca tespit edilir:
topile “php-fpm” sürecinin CPU’yu domine ettiğini görürsünüz.iostat -xz 1 5ile SSD’nin %util değerinin %98 olduğunu fark edersiniz.ifstat 1 5ile ağ çıkışının (tx) beklenenden %150 daha yüksek olduğunu belirlersiniz.
Bu veriler ışığında, WordPress hosting paketinizde “OPcache” etkinleştirilir, veritabanı sorguları optimize edilir ve CDN entegrasyonu yapılır. Aynı zamanda, “disk I/O” sorunu için daha yüksek IOPS değerine sahip bir SSD’ye geçiş planlanır. Sonuçta, kampanya süresince yanıt süresi %45 azalır ve satış kaybı minimuma iner.
Sıkça Sorulan Sorular
Linux’ta CPU kullanımını yüzde olarak nasıl elde ederim?
top veya htop komutları doğrudan “%CPU” sütununu verir. Daha script tabanlı bir çözüm için mpstat -P ALL 1 1 komutu kullanılabilir; bu komut her çekirdek için yüzde CPU kullanımını raporlar.
Windows PowerShell ile bellek kullanımını log dosyasına nasıl kaydederim?
Aşağıdaki tek satırlık script, “Available MBytes” değerini 5 saniyelik aralıklarla bir .log dosyasına yazar:
while($true){ Get-Counter '\Memory\Available MBytes' | Out-File -Append -FilePath C:\logs\mem.log; Start-Sleep -Seconds 5 }
Docker container’da bellek limitini aşan bir container’ı nasıl yeniden başlatırım?
Öncelikle docker stats ile limit aşımını doğrulayın. Ardından docker restart <container_id> komutu, container’ı yeniden başlatır. Kalıcı çözüm için docker run komutunda --memory parametresiyle uygun limit belirlenmelidir.
Kubernetes’te pod’ların CPU throttling sorunu nasıl tespit edilir?
kubectl top pods çıktısında “CPU%” sütunu %100’ü geçiyorsa throttling gerçekleşiyor demektir. Ayrıca kubectl describe pod <pod_name> komutu, “Events” kısmında “CPUThrottlingHigh” uyarısını gösterir.
Sonuç ve Bir Sonraki Adımınız
Sunucu kaynak kullanımını izlemek, sadece sorun anında müdahale etmekle kalmaz; aynı zamanda altyapınızın kapasite planlamasını da doğru yapmanızı sağlar. Bu makalede tanıttığımız komutlar ve otomasyon örnekleri, performans kayıplarını %70’e kadar azaltabilir ve hizmet kesintilerini önleyebilir.
İzleme sisteminizi kurduktan sonra, bir sonraki adım SLA hizmeti kapsamında belirlediğiniz SLA metriklerine göre alarm eşiklerini yapılandırmak ve raporlama süreçlerini otomatize etmektir. Böylece, hem teknik ekip hem de iş birimleriniz, sistem performansını şeffaf bir şekilde izleyebilir ve zamanında karar alabilir.