วิธีค้นหาสาเหตุของการเพิ่มโหลดเซิร์ฟเวอร์


12

ฉันมีปัญหาในการโหลดกับเซิร์ฟเวอร์ของฉันและแม้ว่าฉันจะเป็นผู้ดูแลระบบ Linux ที่มีประสบการณ์บ้างตอนนี้ฉันยังไม่ได้คิดเลย

ปัญหาคือโหลดช้า แต่เพิ่มขึ้นอย่างต่อเนื่องบนเซิร์ฟเวอร์โดยไม่มีสาเหตุที่ชัดเจน

เซิร์ฟเวอร์นั้นเป็นโปรเซสเซอร์ AMD Athlon (tm) 64 X2 ดูอัลคอร์โปรเซสเซอร์ 6000+ พร้อม RAM ขนาด 6GB มันใช้งาน Debian Stable กับ Linux gir 2.6.26-2-amd64 # 1 SMP พุธ 19 สิงหาคม 22:33:18 UTC 2009 x86_64 GNU / Linux

เซิร์ฟเวอร์นั้นใช้ Lighttpd, กระบวนการ FastCGI PHP หลายตัวและฐานข้อมูล MySQL งานเว็บเซิร์ฟเวอร์ทั่วไป

ซีพียูไม่เคยถูกใช้จนหมดและหน่วยความจำส่วนใหญ่ใช้สำหรับบัฟเฟอร์และแคชซึ่งก็ดี ฉันพยายามเริ่มบริการต่าง ๆ เพื่อดูว่าหนึ่งในนั้นจะลดการโหลดอีกครั้ง แต่ไม่มีโชค

นี่คือกราฟิคที่แสดงภาระ CPU และ IOStat:

ดังนั้นคำถามคืออะไรอาจทำให้โหลดช้า แต่เคยเพิ่มขึ้น? และฉันจะรู้ได้อย่างไรว่ามีอะไรรับผิดชอบ?

อัปเดต: ฉันลืมที่จะพูดถึงเมื่อฉันรีบูตเซิร์ฟเวอร์การโหลดจะลดลงเหลือประมาณ 0.3 ถึง 0.6 และจะเริ่มไต่ขึ้นอย่างช้า ๆ ในสัปดาห์หน้า


1
รูปภาพที่คุณโพสต์ไม่มีอยู่อีกต่อไป โปรดอัพโหลดอีกครั้งหากคุณยังมีสำเนาอยู่
Michael Hampton

คำตอบ:


6

แต่ละกระบวนการซอมบี้เพิ่ม 1.0 ให้กับโหลด คุณอาจเห็นการสะสมของซอมบี้


ใช่. ตรวจสอบกราฟ" จำนวนกระบวนการ "
เท็ดดี้

หากถูกต้องการพิมพ์for N in {1..100} ; do sleep 60 & done ; exec sleep 500ควรจะเพียงพอที่จะทำให้เกิดการโหลดสูง แต่มันก็ไม่ได้ คำสั่งนั้นสร้างซอมบี้ 100 ตัว แต่โหลดบนคอมพิวเตอร์ของฉันยังคงต่ำกว่า 1
kasperd

5

ฉันพบคำใบ้ที่ยอดเยี่ยมในการตอบคำถามอื่น

การค้นหาโปรเซสในสถานะ 'D' แสดงกระบวนการ PHP สี่ขั้นตอนที่ดูเหมือนจะหยุดอยู่พักหนึ่งซึ่งสอดคล้องกับ "ขั้นตอน" ในกราฟการโหลด:

#> ps aux | awk '$8 ~ /D/  { print $0 }'
wiki      6651  0.0  0.0      0     0 ?        D    Oct04   0:41 [php-cgi]
bugs      6731  0.0  0.0      0     0 ?        D    Oct27   0:14 [php-cgi]
manpages  7536  0.0  0.0      0     0 ?        D    Oct30   0:21 [php5-cgi]
wiki     23847  0.0  0.0      0     0 ?        D    Oct06   1:32 [php-cgi]

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


คำตอบนี้แก้ไขปัญหาของฉัน โหลดเพิ่มขึ้นจาก 0.5 เป็น 350 และเพิ่มขึ้นเรื่อย ๆ มันเป็นเพราะกระบวนการซอมบี้พยายามที่จะอ่านโฟลเดอร์ระยะไกลที่ถูกลบ
Philippe Delteil

2

ฉันเดาว่าเซิร์ฟเวอร์นั้นได้รับการอดอาหาร IO บางทีคุณควรเพิ่มสถิติไอโซโทปในกราฟ

ฉันสงสัยว่าคุณสามารถมีกิจกรรม io ต่อแอปพลิเคชันที่เป็นปัจจัยสำหรับการโหลดเซิร์ฟเวอร์หรือไม่

http://rt.wiki.kernel.org/index.php/I/Otop_utility

เครื่องมืออื่น ๆ คือ dstat


ฉันเพิ่มกราฟิกสำหรับ IOStat เช่นกัน ดิสก์ IO ไม่เพิ่มขึ้นตามการโหลด นั่นคือสิ่งที่คุณตั้งเป้าหมายไว้?
Andreas Gohr

โอ้และ dstat ดูมีประโยชน์ ฉันต้องอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้
Andreas Gohr


0

ปัญหาประเภทนี้มักเกิดจากฮาร์ดดิสก์ที่ไม่เร็วพอที่จะให้บริการข้อมูลที่ฐานข้อมูล MySQL และเซิร์ฟเวอร์ HTTP ต้องการ คุณควรดูคำสั่ง iostat


IO ดูธรรมดาสำหรับฉัน และจะไม่อธิบายว่าทำไมโหลดเพิ่มขึ้นอย่างช้าๆ
Andreas Gohr

-1

โดยทั่วไปแล้วไม่ใช่เรื่องเลวร้ายที่จะโหลดเซิร์ฟเวอร์สูง หมายความว่าคุณไม่ได้นั่งเฉยๆและทำน้อยกว่าที่คุณจะทำได้ โหลด 80% -90% ของความจุทั้งหมดของคุณ (กับบางห้อง "ระเบิด") คือสิ่งที่มักจะขอหลังจาก ฉันขอแนะนำให้ตรวจสอบผลลัพธ์ของ mpstat และ vmstat โดยเฉพาะอย่างยิ่งตัวเลข 2 ตัวแรกจาก vmstat สามารถให้ข้อมูลที่มีความหมายมากขึ้นเกี่ยวกับวิธี "สำรองข้อมูล" ของคุณในแง่ของกระบวนการในการรันคิว คอลัมน์สุดท้าย ("wa") ของเอาต์พุต vmstat สามารถบอกคุณได้ว่านานแค่ไหนที่คุณรอ I / O ที่สมบูรณ์ ขนาดคิวการรันและเวลารอ I / O มักจะสัมพันธ์กัน ตรวจสอบ sar ด้วย (จากแพ็คเกจ sysstat): ซึ่งจะช่วยให้คุณเห็นรายละเอียดของสิ่งที่เกิดขึ้นในช่วงเวลาหนึ่ง ตัวชี้วัดที่บันทึกอย่างละเอียดมาก

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