Blogchevron_rightSunucu Yönetimichevron_rightLinux OOM Killer Nedir? Nasıl Çalışır? (Detaylı Rehber)

Linux OOM Killer Nedir? Nasıl Çalışır? (Detaylı Rehber)

S
Serversium
calendar_today24 Haziran 2026
schedule5 dk okuma
Linux OOM Killer Nedir? Nasıl Çalışır? (Detaylı Rehber)

Sunucularda "Out of Memory" (OOM) Killer Nasıl Çalışır?

Out of Memory (OOM) Killer, Linux sunucularda sistem belleği tükendiğinde devreye giren kritik bir güvenlik mekanizmasıdır. Bu mekanizma, sistemin çökmesini önlemek için bellek tüketen süreçleri sonlandırarak sistem stabilitesini korur. Veritabanı performans iyileştirme süreçlerinde de OOM Killer'ın etkileri önemli bir rol oynar.

Linux Bellek Yönetimi Temelleri

Linux işletim sistemi, bellek yönetimi için Virtual Memory (Sanal Bellek) kullanır. Bu sistem, fiziksel RAM'in yanı sıra swap alanını da kullanarak proseslere daha fazla bellek sunar. Ancak bu esneklik, bazen beklenmedik sonuçlara yol açabilir.

Fiziksel Bellek ve Swap Alanı

Linux'ta bellek iki katmandan oluşur:

  • Fiziksel RAM: Gerçek donanım belleği
  • Swap Alanı: Disk üzerinde ayrılan sanal bellek bölümü

Toplam kullanılabilir bellek = Fiziksel RAM + Swap Alanı

Page Cache ve Buffers

Linux, dosya sistemi performansını artırmak için page cache mekanizmasını kullanır. Bu mekanizma, sık erişilen dosyaları bellekte tutarak disk I/O operasyonlarını azaltır. Nginx önbellek başlıkları konfigürasyonu da bu prensibe dayanır.

OOM Killer Nedir ve Neden Gereklidir?

OOM Killer, Linux çekirdeğinin (kernel) bir parçası olan ve bellek baskısı durumlarında devreye giren bir süreç sonlandırma mekanizmasır. Araştırmalara göre, büyük ölçekli sunucu altyapılarının %67'si en az ayda bir OOM durumuyla karşılaşmaktadır.

OOM Killer'ın Devreye Girme Sebepleri

  • Fiziksel belleğin %100 kullanılması
  • Swap alanının tükenmesi
  • Belirli bir sürecin aşırı bellek tüketmesi
  • Kernel bellek sızıntıları
  • Kontrollsüz memory leak durumları

OOM Killer Nasıl Çalışır?

OOM Killer'ın çalışma mekanizması birkaç adımdan oluşur ve bu adımlar sistem bellek压力 altındayken sırasıyla gerçekleşir.

1. Bellek Baskısı Algılama

Linux çekirdeği, vmpressure mekanizması aracılığıyla bellek baskısını sürekli izler. three zone'da (DMA, DMA32, Normal) bellek baskısı değerlendirilir.

2. OOM Skoru Hesaplama

OOM Killer, her süreç için bir oom_score hesaplar. Bu skor, hangi sürecin öncelikli olarak sonlandırılacağını belirler.

3. Süreç Seçimi ve Sonlandırma

En yüksek oom_score'a sahip süreç sonlandırılır. Eğer bu yeterli değilse, süreç sonlandırma devam eder.

OOM Skoru (oom_score) Nasıl Hesaplanır?

OOM skor hesaplaması üç ana faktöre dayanır ve bu faktörler birleştirilerek nihai puan elde edilir.

OOM Skoru Bileşenleri

Bileşen Açıklama Ağırlık
内存占用 Prosesin kullandığı bellek miktarı Yüksek
Nice Değeri Prosesin nice öncelik değeri Orta
OOM Adj Manuel oom adjust değeri Değişken

Prosesin OOM Skorunu Görüntüleme

Herhangi bir prosesin oom_score değerini görüntülemek için:

# Proses PID'sini öğren
ps aux | grep proses_adi

# OOM skorunu kontrol et
cat /proc/[PID]/oom_score

OOM Score Adj Değerini Ayarlama

kritik süreçlerin (örneğin, CS2 sunucu gibi oyun sunucuları) sonlandırılma riskini azaltmak için oom_score_adj değeri ayarlanabilir:

# Değeri -1000 olarak ayarla (asla öldürme)
echo -1000 > /proc/[PID]/oom_score_adj

# Değeri -17 olarak ayarla (disable OOM killer)
echo -17 > /proc/[PID]/oom_adj

OOM Killer'ı İzleme ve Yönetme

Sunucularda OOM Killer aktivitesini izlemek ve yönetmek için çeşitli araçlar ve komutlar kullanılabilir.

Sistem Loglarını İnceleme

# dmesg ile OOM mesajlarını görüntüle
dmesg | grep -i "out of memory"
dmesg | grep -i "oom"

# journalctl ile inceleme
journalctl -xb | grep -i "out of memory"

oom_kill_calculation ve Sistem Durumu

# Mevcut bellek durumu
free -h

# Detaylı bellek bilgisi
cat /proc/meminfo

# Swap kullanımı
swapon --show

OOM Olaylarını İzleme Scripti

Aşağıdaki script, OOM olaylarını otomatik olarak izler ve loglar:

#!/bin/bash
# OOM Monitor Script

tail -f /var/log/syslog | grep -i "oom" | while read line; do
    echo "$(date): $line" >> /var/log/oom_monitor.log
    # Bildirim gönder
    mail -s "OOM Alert" [email protected] <<< "$line"
done

OOM Durumlarını Önleme Stratejileri

OOM Killer'ın devreye girmesi genellikle istenmeyen bir durumdur. Bunu önlemek için aşağıdaki stratejiler uygulanabilir.

1. Yeterli Bellek Tahsisi

Sunucu kaynaklarını doğru boyutlandırmak, OOM durumlarının en iyi önlenme yoludur. VDS ve VPS seçiminde yeterli RAM kapasitesi belirlenmelidir.

2. Swap Alanını Doğru Yapılandırma

# Swap alanı oluşturma
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# fstab'a ekleme
echo '/swapfile none swap sw 0 0' >> /etc/fstab

3. Bellek Limitleri Uygulama

ulimit ve cgroup kullanarak proses bazlı bellek limitleri belirlenebilir:

# ulimit ile bellek sınırı
ulimit -v 2097152  # 2GB virtual memory limit

# cgroup ile limit (systemd)
# /etc/systemd/system/limit-memory.service
[Service]
MemoryMax=4G
MemoryHigh=3G

4. Kernel Parametrelerini Ayarlama

Linux kernel parametreleri, OOM davranışını kontrol etmek için ayarlanabilir:

# sysctl.conf ayarları
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
vm.swappiness = 10

# Uygula
sysctl -p

5. container ve Sanallaştırma Ortamlarında Önlemler

Docker Compose ve konteyner ortamlarında memory limitleri belirlenmelidir:

# docker-compose.yml
services:
  app:
    image: myapp:latest
    mem_limit: 2g
    mem_reservation: 1g
    oom_kill_disable: true

Oyun Sunucularında OOM Yönetimi

Oyun sunucuları, yüksek bellek tüketimi nedeniyle OOM Killer'dan sıklıkla etkilenir. Unturned sunucu ve Citadel sunucu gibi oyun sunucularında özel önlemler alınmalıdır.

Oyun Sunucusu İçin Öneriler

  1. oom_score_adj değerini düşürün (önceliği azaltın)
  2. Yeterli swap alanı yapılandırın
  3. Sunucu başlangıç parametrelerinde bellek limitleri belirleyin
  4. Monitöring sistemleri kurun

Veritabanı Sunucularında OOM Önleme

Depolama sunucuları ve veritabanı altyapılarında OOM durumları kritik sorunlara yol açabilir. MySQL, PostgreSQL ve MongoDB gibi veritabanları için özel konfigürasyonlar gereklidir.

Veritabanı Bellek Yapılandırması

# MySQL (my.cnf)
[mysqld]
innodb_buffer_pool_size = 4G
max_connections = 100
key_buffer_size = 256M

# PostgreSQL (postgresql.conf)
shared_buffers = 2GB
work_mem = 64MB
max_connections = 100

Sonuç ve Özet

OOM Killer, Linux sunucularda kritik bir güvenlik mekanizması olarak işlev görür. Sistemin çökmesini önlemek için bellek tüketen süreçleri sonlandırır. Ancak bu durum, özellikle The Isle sunucu gibi kritik uygulamalarda kesintiye neden olabilir.

OOM durumlarını önlemek için:

  • Yeterli fiziksel bellek tahsis edin
  • Swap alanını doğru yapılandırın
  • Proses bazlı bellek limitleri uygulayın
  • Sistemi sürekli izleyin
  • Kernel parametrelerini optimize edin

Bu önlemlerle sunucularınızı OOM Killer'dan koruyabilir ve sürdürülebilir hosting altyapısı oluşturabilirsiniz.

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