Rain WikiWindows · Linux · Android

OOM killer

KavramTüm Linux dağıtımları

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

  1. Çekirdek günlüklerinde arama yapın: journalctl -k | grep -i -A5 'out of memory'
  2. Sonlandırılan süreci ve bellek boyutunu not edin.
  3. Mevcut belleği ve takas alanını kontrol edin: free -h
  4. En büyük süreçleri bulun: ps aux --sort=-rss | head
  5. 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.

Kaynaklar

  1. proc(5) kılavuz sayfası: oom_score ve oom_score_adj man7.org
  2. 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: