วิธีการวินิจฉัยสาเหตุของกระบวนการฆ่า oom-killer


9

ฉันมีเซิร์ฟเวอร์ส่วนตัวเสมือนขนาดเล็กที่ใช้งาน CentOS และ www / mail / db ซึ่งเพิ่งเกิดเหตุการณ์สองสามครั้งที่เว็บเซิร์ฟเวอร์และ ssh ไม่ตอบสนอง

เมื่อดูที่บันทึกฉันเห็นว่า oom-killer ฆ่ากระบวนการเหล่านี้อาจเป็นเพราะหน่วยความจำไม่เพียงพอและสลับกัน

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

คำตอบ:


11

ไม่ได้อัลกอริธึมไม่ใช่แบบง่ายๆ คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่:

http://linux-mm.org/OOM_Killer

หากคุณต้องการติดตามการใช้หน่วยความจำฉันขอแนะนำให้เรียกใช้คำสั่งเช่น:

ps -e -o pid,user,cpu,size,rss,cmd --sort -size,-rss | head

มันจะให้รายการของกระบวนการที่ใช้หน่วยความจำมากที่สุด (และอาจทำให้สถานการณ์ OOM) ลบ| headหากคุณต้องการตรวจสอบกระบวนการทั้งหมด

หากคุณวางสิ่งนี้ลงบน cron ของคุณให้ทำซ้ำทุก 5 นาทีแล้วบันทึกลงในไฟล์ เก็บอย่างน้อยสองสามวันเพื่อให้คุณสามารถตรวจสอบสิ่งที่เกิดขึ้นในภายหลัง

สำหรับบริการที่สำคัญเช่น ssh ฉันขอแนะนำให้ใช้ monit สำหรับการรีสตาร์ทอัตโนมัติในสถานการณ์เช่นนี้ มันอาจบันทึกจากการสูญเสียการเข้าถึงเครื่องหากคุณไม่มีคอนโซลระยะไกล

โชคดีที่สุด
João Miguel Neves


ขอบคุณ - ในที่สุดการพยายามทำสิ่งนี้หลังจากเหตุการณ์สองสามครั้งที่นักอุ้มนักฆ่านำเซิร์ฟเวอร์ของฉันไปที่หัวเข่า จำเป็นต้องติดตามสาเหตุ
dunxd

6

ฉันมีช่วงเวลาที่ยากลำบากเมื่อเร็ว ๆ นี้เนื่องจากกระบวนการ (es) ที่ stomps อุ้มนักฆ่าในไม่จำเป็นต้องเป็นคนที่ได้ไปเบี้ยว ในขณะที่พยายามวินิจฉัยสิ่งนั้นฉันได้เรียนรู้เกี่ยวกับเครื่องมือยอดนิยมตัวหนึ่งของฉันตอนนี้

ยูทิลิตี้นี้เป็นเหมือนด้านบนเตียรอยด์ ในช่วงเวลาที่กำหนดไว้ล่วงหน้าจะทำการรวบรวมข้อมูลระบบ จากนั้นคุณสามารถเล่นกลับเพื่อดูว่าเกิดอะไรขึ้น มันเน้นกระบวนการที่เป็น 80% + ในสีน้ำเงินและ 90% + ในสีแดง มุมมองที่มีประโยชน์ที่สุดคือตารางการใช้หน่วยความจำของจำนวนหน่วยความจำที่จัดสรรในช่วงเวลาล่าสุด นั่นคือสิ่งที่ช่วยฉันได้มากที่สุด

เครื่องมือที่ยอดเยี่ยม - พูดอย่างนั้นไม่พอ

บนยอดการตรวจสอบประสิทธิภาพ


1

นี้บทความเกี่ยวกับการฝึกฝนชอุ่ม-kille R ลักษณะที่มีประโยชน์โดยเฉพาะอย่างยิ่ง ดูเหมือนว่าคุณสามารถกำหนดลำดับความสำคัญเพื่อป้องกันการฆ่า oom-killer กระบวนการบางอย่าง (sshd จะเป็นการเริ่มต้นที่ดีสำหรับ VPS!)


1

OOM ฆ่ากระบวนการที่ใช้หน่วยความจำมากที่สุดในเวลานั้นเท่านั้น ไม่จำเป็นต้องเป็นกระบวนการที่เกินขีด จำกัด หรือถูกเรียกการโทรออก OOm
นอกจากนี้ linux ยังเป็น lax ที่มีการจัดสรรหน่วยความจำ AKA หากกระบวนการของคุณต้องการ 5gb แต่ใช้เพียง 3 เท่านั้น linux จะอนุญาตให้กระบวนการอื่นใช้ 2 ซึ่งไม่ได้ใช้งาน ประสิทธิภาพ> ความน่าเชื่อถือ จากนั้นเมื่อ p1 ต้องการเต็ม 5 มันไม่สามารถรับได้

ไม่ใช่ exeprt แค่จัดการกับตัวเองและสิ่งที่ฉันได้พบ

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