Linux OOM katili tarafından hangi sürecin öldürüldüğünü bulma


173

Linux'un belleği dolduğunda (OOM), OOM katili bazı sezgisel taramalara dayanarak öldürmek için bir süreç seçer (ilginç bir okuma: http://lwn.net/Articles/317814/ ).

OOM katili tarafından yakın zamanda hangi süreçlerin öldürüldüğünü programsal olarak nasıl belirleyebiliriz?

Yanıtlar:


171

Şunu deneyin:

grep -i 'killed process' /var/log/messages

18
FWIW, bu iletileri syslog veya kern.log'da alıyorum, ancak / var / log / messages
jberryman

36
Başka yerlerde de aramak için "egrep -i -r 'kill process' / var / log /" kullanabilirsiniz.
metdos

5
@jberryman: Bazı nedenlerden dolayı, sistem günlüğü /var/log/syslogbazı dağıtımlarda ve /var/log/messagesdiğerlerinde bulunur. Bence eski için Debian, ikincisi için Red Hat, BICBW.
Tom Anderson

5
"dmesg | egrep -i 'kill process'" ve günlükleri (arşivlenmiş olanlar dahil) her yerde arayabilirsiniz :)
John D

2
egrepburada mantıklı değil. Sade eski grep, ya da spesifik olursak fgrep, çok daha mantıklı. (Buna göre cevabı düzenleme.)
antak

148

Günlüklerinizin nerede olduğu konusunda endişelenmenize gerek kalmaması için bunu deneyin

dmesg | egrep -i 'killed process'

1
Bu da yararlıdır, ancak ne yazık ki açıklayamama rağmen, / ' /var/log/messagesde görünmeyen sonuçlar görüyorum . Bir çeşit yanlış yapılandırma olabilir, ancak her iki yaklaşımı kullanmanın iyi bir fikir olabileceğini belirtmek gerekir. dmesg/var/log/dmesg
kungphu

3
Günlük dosyanızdan emin değilsiniz, ancak dmesg çıktısı sınırlı boyutlu bir halka arabelleğinden. Oom-katilden beri tamponu başka şeyler doldurduysa oom-katil çıkışını kaybedersiniz.
Dan Pritts

Bu sürecin OpenVZ konteynerinde öldürüldüğünü görmenin tek yolu buydu
igo

16
Ayrıca dmesg -Tokunabilir zaman damgaları almak için kullanmanızı öneririm
gukoff

2
/ Var / log / messages ile karşılaştırıldığında, bunun kök ayrıcalıkları gerektirmemesi gibi avantajları vardır
Kineolyan

52

Şimdi dstat, oom mekanizması tarafından öldürülmeye hangi sürecin aday olduğunu koşu sisteminizde bulma özelliği sunuyor

dstat --top-oom
 --out-of-memory---
  kill score
 java           77
 java           77
 java           77

ve adam sayfasına göre

  --top-oom
          show process that will be killed by OOM the first

Bu bilgi puanın ne anlama geldiğini bilmeden anlamsızdır ve hiçbir yerde belgelenmemiştir. Görebileceğiniz tek şey puan artışı, o zaman süreç öldürülüyor, bu yüzden belki de oom katili ya da başka bir şeydi, emin olmanın bir yolu yok.
laurent

18

Şunu deneyin:

grep "Killed process" /var/log/syslog
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.