Bu gerçekleşmeden önce çekirdek bir sürü şey kaydetmiş olacak, ancak /var/log/messages
nasıl (r)syslogd
yapılandırıldığına bağlı olarak büyük olasılıkla içinde olmayacak . Deneyin:
grep oom /var/log/*
grep total_vm /var/log/*
İlki bir kaç kez ortaya çıkmalı ve ikincisi sadece bir veya iki yerde ortaya çıkmalı. Bakmak istediğiniz dosya budur.
Orijinal "Bellek Dolu" satırını da içeren dosyalardan birinde bulun total_vm
. Bir dakika otuz saniye (daha fazla olabilir, daha az olabilir) bu satırdan önce şöyle bir şey bulacaksınız:
kernel: foobar invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
Ayrıca bu satırla "Bellek Dolu" satırı arasında bir yerde bir tablo bulmalısınız:
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
Bu size bildiğinizden çok daha fazlasını söylemeyebilir, ancak alanlar şunlardır:
- pid İşlem kimliği.
- kullanıcı kimliği.
- tgid Konu grubu kimliği.
- total_vm Sanal bellek kullanımı (4 kB sayfalarda)
- rss Yerleşik bellek kullanımı (4 kb sayfalarda)
- nr_ptes Sayfa tablosu girdileri
- swapents girdileri takas
- oom_score_adj Genellikle 0; düşük bir sayı, OOM katili çağrıldığında işlemin ölme olasılığının düşük olacağını gösterir.
Çoğunlukla görmezden gelebilirsiniz nr_ptes
ve swapents
bunların kimi öldüreceğini belirleyen faktörler olduğuna inanıyorum. Bu mutlaka en fazla belleği kullanan işlem değildir, ancak büyük olasılıkla öyle. Seçim süreci hakkında daha fazla bilgi için buraya bakınız . Temel olarak, en yüksek oom skoruyla biten süreç öldürülür - bu, "Bellek Dolu" satırında rapor edilen "puan" dır; ne yazık ki diğer puanlar bildirilmemiştir ancak bu tablo faktörler açısından bazı ipuçları vermektedir.
Yine, bu muhtemelen açık olanı aydınlatmaktan daha fazlasını yapmayacaktır: sistem belleği tükendi ve mysqld
ölmek seçildi çünkü onu öldürmek çoğu kaynağı serbest bırakacaktı . Bu gerekli değil demek mysqld
yanlış bir şey yapıyor demektir . O sırada başka bir şey olup olmadığını görmek için masaya bakabilirsiniz, ancak net bir suçlu olmayabilir: sadece çalışan işlemleri yanlış yaptığınız veya yanlış yapılandırdığınız için sistem belleği yetersiz tutabilir.
dmesg
?