Blogchevron_rightSunucu Yönetimichevron_rightSunucuda Zombi İşlemler: Tespit ve Temizleme Rehberi

Sunucuda Zombi İşlemler: Tespit ve Temizleme Rehberi

S
Serversium
calendar_today18 Mayıs 2026
schedule5 dk okuma
Sunucuda Zombi İşlemler: Tespit ve Temizleme Rehberi

Sunucuda Zombi İşlemler (Zombie Processes) Nedir?

Zombi işlemler (Zombie Processes), Linux ve Unix tabanlı sunucularda karşılaşılan ve sistem kaynaklarını tüketen ölü ancak tamamen temizlenmemiş süreçlerdir. Bir alt işlem (child process) çalışmayı tamamladığında, ebeveyn süreç (parent process) tarafından beklenen wait() sistem çağrısı yapılmadığında, bu işlem "zombi" durumuna geçer. İstatistiklere göre, ortalama bir Linux sunucusunda her ay 50-200 arasında zombi işlem oluşabilmektedir.

Zombi İşlemlerin Oluşma Nedenleri

Zombi işlemlerin sunucuda oluşmasının birkaç temel nedeni vardır:

  1. Ebeveyn sürecin beklenmedik sonlanması: Ana süreç aniden öldürüldüğünde veya çöktüğünde, alt süreçler orphans (öksüz) süreçlere dönüşür veya zombi kalır.
  2. wait() çağrısının yapılmaması: Programcının kodundaki hata nedeniyle ebeveyn süreç, alt sürecin durumunu okumaz.
  3. Sinyal engelleme: Ebeveyn süreç SIGCHLD sinyalini engellerse, çocuk süreçler zombi olarak kalır.
  4. Yüksek sistem yükü: Aşırı yük altındaki sunucularda işlem tablosu doluluğu zombi oluşumunu hızlandırır.

Zombi İşlem Nasıl Tespit Edilir?

1. top Komutu ile İzleme

En yaygın kullanılan yöntem top komutudur. Komut satırına şunu yazın:

top

Çıktıda "Z" harfiyle işaretlenmiş satırlar zombi süreçleri gösterir. Ayrıca üst kısımdaki "Tasks" bölümünde "zombie" sayısını görebilirsiniz.

2. ps Komutu ile Tespit

Zombi süreçleri listelemek için aşağıdaki komutu kullanın:

ps aux | grep zombie

veya daha detaylı olarak:

ps -eo pid,ppid,stat,comm | grep ^Z

3. pgrep Kullanımı

ps -eo pid,ppid,stat,cmd | awk '$3 ~ /Z/ {print}'

Sunucuda Zombi İşlemler Nasıl Temizlenir?

1. Ebeveyn Süreci Yeniden Başlatma

En etkili yöntem, zombi sürecin ebeveyn sürecini (PPID) yeniden başlatmaktır. Önce zombi sürecin PPID'sini bulun:

ps -o pid,ppid,stat,cmd -p [zombie_pid]

Sonra ebeveyn süreci yeniden başlatın:

kill -HUP [parent_pid]

2. Süreci Öldürme

Ebeveyn süreci zorla sonlandırmak için:

kill -9 [parent_pid]

Bu yöntem işe yaramazsa, süreç "uninterruptible sleep" (D durumu) durumunda olabilir.

3. wait() Çağrısı Yapmak

Eğer kaynak koda erişiminiz varsa, ebeveyn süreçte wait() veya waitpid() çağrısı ekleyerek sorunu çözebilirsiniz:

#include <sys/wait.h>
int status;
waitpid(pid, &status, 0);

4. Sistemi Yeniden Başlatma

Yukarıdaki yöntemlerin hiçbiri işe yaramazsa, sunucuyu yeniden başlatmak en kesin çözümdür:

reboot

Zombi Önleme Stratejileri

Sunucu güvenliği açısından zombi önleme kritik öneme sahiptir:

  • Supervisor veya PM2 kullanımı: Otomatik süreç yönetimi için PM2 Node.js rehberi incelenebilir.
  • Sinyal yönetimi: SIGCHLD sinyalini doğru şekilde işleyin.
  • Kaynak sınırları: ulimit ayarlarını yapılandırın.
  • Monitöring: Zombi oluşumunu izlemek için Nagios, Zabbix gibi araçlar kullanın.

Zombi İşlem Temizleme Yöntemleri Karşılaştırması

Yöntem Zorluk Etkinlik Risk
Ebeveyn süreci yeniden başlatma Düşük Yüksek Düşük
kill -9 Düşük Orta Orta
Kaynak kodu düzeltme Yüksek Çok Yüksek Çok Düşük
Sunucu yeniden başlatma Düşük Çok Yüksek Yüksek

Zombi İşlemlerin Sistem Kaynaklarına Etkisi

Zombi süreçler doğrudan CPU veya bellek tüketmez, ancak işlem tablosunda yer kaplar. Her zombi yaklaşık 1-2 KB süreç yapısı (task_struct) kullanır. İşlem tablosu dolduğunda yeni süreçler başlatılamaz ve sistem "fork: Cannot allocate memory" hatası verir. Araştırmalara göre, 1000'den fazla zombi süreç sistem performansını %15-20 oranında düşürebilir.

Otomatik Temizleme Scriptleri

Düzenli temizlik için bir cronjob oluşturabilirsiniz:

#!/bin/bash
# Zombi süreçleri temizleme scripti
zombies=$(ps aux | awk '$8 ~ /Z/ {print $2}')
if [ -n "$zombies" ]; then
    echo "Zombi süreçler tespit edildi: $zombies"
    for pid in $zombies; do
        ppid=$(ps -o ppid= -p $pid)
        if [ -n "$ppid" ]; then
            kill -9 $ppid 2>/dev/null
        fi
    done
fi

Bu scripti /etc/cron.hourly/ klasörüne yerleştirerek saatlik otomatik temizlik sağlayabilirsiniz.

Sonuç

Zombi işlemler Linux sunucularda yaygın bir sorundur ve sistem kararlılığını tehdit edebilir. Doğru izleme araçları kullanarak erken tespit, uygun temizleme yöntemleriyle müdahale ve kalıcı çözümler için kaynak kodu düzeltmeleri yapılmalıdır. Düzenli sistem bakımı ve monitöring, zombi süreçlerden kaynaklanan sorunları minimize eder.

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward