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.