เมื่อ Linux มีหน่วยความจำไม่เพียงพอ (OOM) OOM killer จะเลือกกระบวนการเพื่อฆ่าตามฮิวริสติกบางอย่าง (เป็นการอ่านที่น่าสนใจ: http://lwn.net/Articles/317814/ )
หนึ่งสามารถกำหนดโดยทางโปรแกรมว่ากระบวนการใดที่ฆาตกร OOM ฆ่าเมื่อไม่นานมานี้
เมื่อ Linux มีหน่วยความจำไม่เพียงพอ (OOM) OOM killer จะเลือกกระบวนการเพื่อฆ่าตามฮิวริสติกบางอย่าง (เป็นการอ่านที่น่าสนใจ: http://lwn.net/Articles/317814/ )
หนึ่งสามารถกำหนดโดยทางโปรแกรมว่ากระบวนการใดที่ฆาตกร OOM ฆ่าเมื่อไม่นานมานี้
คำตอบ:
ลองใช้ดู
grep -i 'killed process' /var/log/messages
/var/log/syslogdistros และ/var/log/messagesอื่น ๆ ฉันคิดว่ามันเป็น Debian สำหรับอดีตและ Red Hat สำหรับ BICBW หลัง
egrepไม่สมเหตุสมผลนี่ ธรรมดาเก่าgrepหรือถ้าเรากำลังถูกเฉพาะfgrepทำให้รู้สึกมากขึ้น (แก้ไขคำตอบตามนั้น)
ลองทำเช่นนี้คุณไม่ต้องกังวลว่าไฟล์บันทึกของคุณอยู่ที่ไหน
dmesg | egrep -i 'killed process'
/var/log/messagesที่ไม่ได้แสดงใน/dmesg /var/log/dmesgอาจเป็นการกำหนดค่าผิดประเภท แต่การสังเกตว่าการใช้ทั้งสองวิธีอาจเป็นความคิดที่ดี
dmesg -Tเพื่อให้สามารถบันทึกเวลาที่อ่านได้
ตอนนี้ 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
ลองใช้ดู
grep "Killed process" /var/log/syslog