เรามีเซิร์ฟเวอร์ที่มีโหลดสูงผิดปกติและใช้ซีพียู แต่เราไม่สามารถหาสาเหตุได้ เมื่อเรารัน procs ทั้งหมดดูเหมือนจะเป็นซีพียูต่ำมาก
http://cl.ly/2d1g0K3q261r0R0K3e35
มีวิธีที่ดีกว่าในการค้นหาสิ่งที่ทำให้เกิดปัญหานี้หรือไม่
เรามีเซิร์ฟเวอร์ที่มีโหลดสูงผิดปกติและใช้ซีพียู แต่เราไม่สามารถหาสาเหตุได้ เมื่อเรารัน procs ทั้งหมดดูเหมือนจะเป็นซีพียูต่ำมาก
http://cl.ly/2d1g0K3q261r0R0K3e35
มีวิธีที่ดีกว่าในการค้นหาสิ่งที่ทำให้เกิดปัญหานี้หรือไม่
คำตอบ:
ฉันคิดว่าข้อบกพร่องนี้เป็นกรณีของคุณ จากสิ่งที่ฉันเห็นจากผลลัพธ์คุณมีหน่วยความจำเพียงพอ (หมายเหตุแคช 14 GB หรือมากกว่านั้น) ไม่มีปัญหา I / O แต่คุณมีกระบวนการที่เกี่ยวข้องกับ xen นี่ทำให้ฉันคิดว่ามันเป็นข้อผิดพลาด
โหลดคือการวัดปริมาณงานที่ระบบมีในเวลา 1, 5 และ 15 นาที
ความเข้าใจผิดที่พบบ่อยที่สุดคือโหลดค่าเฉลี่ยเชื่อมต่อกับการใช้งาน CPU ของระบบอย่างแท้จริง
โหลดทำรวมการวัดเพิ่มเติมเช่น CPU ที่รอ I / O ซึ่งฉันคิดว่าเป็นปัญหาของคุณ
จากภาพที่ฉันคาดเดาว่าคุณมีหน่วยความจำไม่เพียงพอและเริ่มทำการแลกเปลี่ยนข้อมูลกับดิสก์
วิธีง่าย ๆfree -m
จะบอกคุณว่าใช้ RAM และ swap เท่าใด คอลัมน์ที่น่าสนใจคือคอลัมน์ฟรีนอกจาก
ถ้าใกล้ศูนย์คุณหมด RAM และควรทำตามนั้น-/+ buffers/cache
iotop
หรือvmstat
ลองและดูว่าเป็น I / O หรือไม่
สังเกตว่าค่าเฉลี่ยการโหลดค่อนข้างสูง (68 ว้าว) เป็นไปได้ไหมว่ามีกระบวนการจำนวนมากที่ใช้ CPU เพียงเล็กน้อยดังนั้นจึงเป็นการสิ้นเปลืองเวลาของ CPU ทั้งหมดหรือไม่ อาจกระบวนการเหล่านั้นเพิ่งเริ่มต้นและเสร็จสิ้นอย่างรวดเร็วดังนั้นด้านบนไม่สามารถจับการดำรงอยู่ของพวกเขาคุณอาจลองดูว่าบนยอดสามารถเห็นว่าหรือไม่
ลอง
iotop
IO เป็นส่วนใหญ่สำหรับฉัน
ลองใช้:
top -o cpu
-o
ธงจะบังคับด้านบนจะสั่งกระบวนการโดยการใช้งาน CPU ในลำดับถัดลง
top -o cpu
ฉันได้ "top: อาร์กิวเมนต์ที่ไม่รู้จัก 'o'"
o
ขณะที่กำลังวิ่ง มันควรจะถามคุณสำหรับคีย์หลัก พิมพ์cpu
และกด Enter
top -o %CPU
มันอาจถูกล็อกไฟล์ใน nfs หรือสิ่งอื่นใดที่ล็อคไฟล์ที่กระบวนการอื่นต้องการการเข้าถึง
อาจพลาดบริการการกำหนดค่าที่มีจำนวนเธรดที่เปิดใช้งานมากเกินไป
ดูเหมือนว่าการใช้งาน CPU มาจากเธรด top
ดูเหมือนจะไม่คำนึงถึงเรื่องนี้ ฉันเพิ่งเห็นสิ่งนี้บนเซิร์ฟเวอร์ mysql มีคำสั่ง INSERT กำลังทำงานอยู่ แต่ฉันไม่สามารถรับแถวใหม่ที่มี SELECT ได้เนื่องจากเธรดของ mysqld บางตัวกำลังปรับปรุงดัชนีตาราง แสดงให้เห็นว่าโหลดของผู้ใช้ 100% ในหนึ่งคอร์ แต่ทุกกระบวนการรวมถึง mysqld นั้นเป็นซีพียู 0.0% ชั่วโมงต่อมา SELECT ตัวเดียวกันก็ให้ชุดผลลัพธ์ที่คาดหวัง
ดูสิ่งนี้ด้วย