OOM killer
OOM (out-of-memory) killer, sistem belleği tükendiğinde ve başka bellek boşaltılamadığında bir süreci sonlandıran Linux çekirdeği bileşenidir. Süreci OOM puanına göre, genellikle en çok belleği kullanan olarak seçer. Çekirdek günlüğü her OOM sonlandırmasını kaydeder.
1Kurbanın seçilme yöntemi
Her sürecin /proc/<pid>/oom_score içinde, bellek kullanımıyla artan bir puanı vardır. -1000 ile 1000 arasındaki /proc/<pid>/oom_score_adj bunu ayarlar; -1000, sürecin asla seçilmeyeceği anlamına gelir.
2OOM sonlandırmalarını bulma
Çekirdek günlüğüne 'Out of memory: Killed process' yazar. journalctl -k | grep -i oom veya dmesg | grep -i oom bu mesajları süreç adı ve bellek kullanımıyla birlikte gösterir.
3Önleme
Bellek veya takas alanı (swap) ekleyin, belleğe aç servisleri sınırlayın veya systemd'nin MemoryMax= gibi seçenekleriyle servis başına sınırlar belirleyin. Bazı dağıtımlar, bellek baskısına dayanarak daha erken harekete geçen systemd-oomd'yi de çalıştırır.
Bir OOM sonlandırmasını araştırma
- Çekirdek günlüklerinde arama yapın:
journalctl -k | grep -i -A5 'out of memory' - Sonlandırılan süreci ve bellek boyutunu not edin.
- Mevcut belleği ve takas alanını kontrol edin:
free -h - En büyük süreçleri bulun:
ps aux --sort=-rss | head - Takas alanı ekleyin veya servisi sınırlayın, ardından tekrar gerçekleşip gerçekleşmediğini izleyin.
Dikkat
- Birçok süreç için oom_score_adj değerini -1000 olarak ayarlamak, çekirdeği güvenli bir seçeneksiz bırakabilir.
- Bellek aşırı taahhüt (overcommit) korumasını anlamadan kapatmak başka yerlerde hatalara neden olabilir.
İlgili makaleler
- Linux üzerinde takas alanı (swap)Takas alanının ne olduğu, free ve swapon komutlarıyla nasıl görüleceği, bir takas dosyasının nasıl ekleneceği ve vm.swappiness ayarının neleri değiştirdiği.
- Sistem yükü ortalamasıÜç sistem yükü ortalaması sayısının ne anlama geldiği, CPU çekirdekleriyle nasıl ilişkili olduğu ve yüksek yükün ne zaman bir sorun teşkil ettiği.
- journalctl ve systemd günlüğüjournalctl ile günlüklerin nasıl okunacağı, günlüğün ne kadar alan kapladığının nasıl kontrol edileceği ve --vacuum seçenekleriyle güvenli bir şekilde nasıl küçültüleceği.
Kaynaklar
- proc(5) kılavuz sayfası: oom_score ve oom_score_adj man7.org
- Out Of Memory Management (kernel.org) kernel.org
Not: RainServer, Linux sunucuları için izleme ve güvenli temizleme sunar; neyin değişeceğini gösterir ve önce sorar.
Son gözden geçirme: