การค้นหากระบวนการที่ถูกฆ่าโดย Linux OOM killer


172

เมื่อ Linux มีหน่วยความจำไม่เพียงพอ (OOM) OOM killer จะเลือกกระบวนการเพื่อฆ่าตามฮิวริสติกบางอย่าง (เป็นการอ่านที่น่าสนใจ: http://lwn.net/Articles/317814/ )

หนึ่งสามารถกำหนดโดยทางโปรแกรมว่ากระบวนการใดที่ฆาตกร OOM ฆ่าเมื่อไม่นานมานี้

คำตอบ:


171

ลองใช้ดู

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

18
FWIW ฉันได้รับข้อความเหล่านั้นใน syslog หรือ kern.log แต่ไม่ใช่ / var / log / messages
jberryman

36
คุณสามารถใช้ "egrep -i -r 'กระบวนการที่ถูกฆ่า' / var / log /" เพื่อค้นหาในที่อื่น ๆ
metdos

5
@jberryman: ด้วยเหตุผลบางอย่าง syslog อยู่ใน/var/log/syslogdistros และ/var/log/messagesอื่น ๆ ฉันคิดว่ามันเป็น Debian สำหรับอดีตและ Red Hat สำหรับ BICBW หลัง
Tom Anderson

5
"dmesg | egrep -i 'กระบวนการที่ถูกฆ่า' 'และคุณสามารถค้นหาบันทึกได้ทุกที่ (รวมถึงไฟล์ที่เก็บถาวร) :)
John D

2
egrepไม่สมเหตุสมผลนี่ ธรรมดาเก่าgrepหรือถ้าเรากำลังถูกเฉพาะfgrepทำให้รู้สึกมากขึ้น (แก้ไขคำตอบตามนั้น)
antak

148

ลองทำเช่นนี้คุณไม่ต้องกังวลว่าไฟล์บันทึกของคุณอยู่ที่ไหน

dmesg | egrep -i 'killed process'

1
นี้ยังเป็นประโยชน์ แต่ในขณะที่ฉันโชคร้ายที่ไม่สามารถอธิบายมันฉันเห็นผลใน/var/log/messagesที่ไม่ได้แสดงใน/dmesg /var/log/dmesgอาจเป็นการกำหนดค่าผิดประเภท แต่การสังเกตว่าการใช้ทั้งสองวิธีอาจเป็นความคิดที่ดี
kungphu

3
ไม่แน่ใจเกี่ยวกับไฟล์บันทึกของคุณ แต่เอาต์พุตของ dmesg มาจากบัฟเฟอร์วงแหวนขนาด จำกัด หากสิ่งอื่น ๆ เต็มไปด้วยบัฟเฟอร์ตั้งแต่ผู้ฆ่าตอมแล้วคุณจะสูญเสียการส่งออกนักฆ่า
Dan Pritts

นี่เป็นวิธีเดียวที่ผมพบว่าวิธีการดูกระบวนการที่ถูกฆ่าตายใน OpenVZ คอนเทนเนอร์
IGO

16
ฉันขอแนะนำให้ใช้dmesg -Tเพื่อให้สามารถบันทึกเวลาที่อ่านได้
gukoff

2
เมื่อเทียบกับ / var / log / ข้อความสิ่งนี้มีข้อดีที่ไม่ต้องใช้สิทธิ์รูท
Kineolyan

52

ตอนนี้ dstat ให้คุณสมบัติในการค้นหาในระบบการทำงานของคุณซึ่งเป็นกระบวนการที่ผู้สมัครรับการฆ่าโดยกลไก oom

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

และตามหน้าคน

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

ข้อมูลนี้ไม่มีความหมายโดยไม่ทราบว่าคะแนนหมายถึงอะไรและไม่ได้บันทึกไว้ที่ใดเลย ทั้งหมดที่คุณเห็นคือการเพิ่มคะแนนจากนั้นกระบวนการที่ถูกฆ่าตายดังนั้นอาจเป็นนักฆ่า oom หรืออาจเป็นอย่างอื่นก็ไม่มีทางที่จะแน่ใจได้
เรน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.