ฉันจะบอกได้อย่างไรว่ากระบวนการใดที่ทำให้เกิดโหลดสูงหากไม่ใช้งาน cpu สูง


12

บางครั้งเซิร์ฟเวอร์ของฉันจะแสดงโหลดเฉลี่ยสูงในโปรแกรม "top" (เช่นโหลดคือ ~ 10 บนเครื่อง 4 คอร์) แต่การใช้งาน CPU ที่แท้จริงไม่สูงมากนัก

ฉันคิดว่าปัญหาคือมีงาน I / O จำนวนมากกำลังทำงานอยู่ มีวิธีง่ายๆในการระบุงานเหล่านี้ที่ก่อให้เกิดการโหลดหรือไม่หากค่า "% CPU" ของพวกเขาที่อยู่ด้านบนไม่สูงมาก


คุณสามารถวางพื้นที่สรุปที่คุณเห็นเมื่อคุณเรียกใช้topคำสั่งได้หรือไม่
mfriedman

คำตอบ:


7

iostatสามารถรายงานสถิติเช่นนี้ได้ มักจะรวมอยู่ใน distro ของคุณในแพคเกจ sysstat

dstatอาจจะคุ้มค่ากับการมองมันเป็นการทดแทนที่ทันสมัย


+1 เพราะiostatจะเป็นคำตอบของฉัน
เออร์นี่

4

หากคุณมีบัญชี IOในเคอร์เนลของคุณคุณสามารถใช้iotopเพื่อให้ข้อมูลเช่นนั้น นอกจากนี้เครื่องมือตรวจสอบเช่น collectd สามารถบันทึกและรายงานข้อมูล


4

หากต้องการค้นหาสิ่งที่ก่อให้เกิดภาระสูงคุณสามารถตรวจสอบบางสิ่งได้

  • vmstat -w จะแสดง ovierwiem (กระบวนการ, สลับ, mem, cpu, io, ระบบ)
  • pmstat -P ALL จะให้สถิติแก่คุณ (พร้อม% iowait) ต่อซีพียูหลัก
  • iostat -x มองหาประโยชน์สูงหรือรอคอยมานานหรือขนาดคิวเฉลี่ยขนาดใหญ่
    • ขุดลึกลงไปด้วย iotop
  • ps -ax ค้นหา state D ซึ่งเป็นการนอนหลับแบบต่อเนื่อง (โดยปกติคือ IO) เรียกใช้การตรวจสอบอีกครั้งหนึ่งหากพวกเขายังอยู่ในสถานะ D
    • ขุดลึกลงไปด้วย strace
    • ตรวจสอบไฟล์และการเชื่อมต่อของกระบวนการเหล่านั้นด้วย lsof และ netstat
  • sar / sysstat - ด้วยเครื่องมือที่คุณสามารถสำรวจได้ไม่เพียง แต่ "ตอนนี้" สถิติ แต่ยังตรวจสอบสิ่งที่เกิดขึ้นเมื่อวานเที่ยงคืน
    • sar -b - กิจกรรม io โดยรวม
    • sar -d - กิจกรรมไอโออุปกรณ์บล็อกแต่ละรายการ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.