ฉันจะหาสาเหตุของความแตกต่างของประสิทธิภาพระหว่างเซิร์ฟเวอร์ Ubuntu สองตัวที่เหมือนกันได้อย่างไร


9

ฉันใช้เซิร์ฟเวอร์Dell R410สองเครื่องในชั้นวางเดียวกันของดาต้าเซ็นเตอร์ (อยู่ด้านหลังตัวโหลดบาลานซ์) ทั้งคู่มีการกำหนดค่าฮาร์ดแวร์ที่เหมือนกันรัน Ubuntu 10.4 ติดตั้งแพคเกจเดียวกันและเรียกใช้เว็บเซิร์ฟเวอร์ Java เดียวกัน (ไม่มีโหลดอื่น ๆ ) และฉันเห็นความแตกต่างด้านประสิทธิภาพที่สำคัญระหว่างทั้งสอง

ความแตกต่างด้านประสิทธิภาพนั้นชัดเจนที่สุดในเวลาตอบสนองเฉลี่ยของเซิร์ฟเวอร์ทั้งสอง (วัดในแอป Java เองโดยไม่มีเวลาแฝงเครือข่าย): หนึ่งในนั้นเร็วกว่าอีก 20-30% อย่างต่อเนื่อง
ฉันเคยdstatคิดว่าถ้ามีการสลับบริบท, IO, การสลับหรืออะไรก็ได้ แต่ฉันไม่เห็นเหตุผลของความแตกต่าง ด้วยเวิร์กโหลดเดียวกัน, (ไม่มีการสลับ, แทบไม่มี IO), การใช้ cpu และโหลดจะสูงกว่าบนเซิร์ฟเวอร์เดียว

ดังนั้นความแตกต่างจึงดูเหมือนว่าจะถูกผูกไว้กับ CPU เป็นหลัก แต่ในขณะที่มาตรฐาน cpu ง่าย ๆ ที่ใช้sysbench(เมื่อปิดโหลดอื่น ๆ ทั้งหมด) ก็ให้ผลที่แตกต่างกันเพียง 6% ดังนั้นอาจไม่ใช่แค่ CPU เท่านั้น แต่ยังรวมถึงประสิทธิภาพของหน่วยความจำ

จนถึงตอนนี้ฉันได้ตรวจสอบ:

  • การแก้ไขเฟิร์มแวร์สำหรับส่วนประกอบทั้งหมด (เหมือนกัน)
  • การตั้งค่า BIOS (ฉันถ่ายโอนข้อมูลโดยใช้dmidecodeและนั่นไม่แตกต่างกัน)
  • ฉันเปรียบเทียบ/proc/cpuinfoไม่มีความแตกต่าง
  • ฉันเปรียบเทียบผลลัพธ์ของcpufreq-infoไม่ต่างกัน
  • พารามิเตอร์ Java / JVM (เวอร์ชันและพารามิเตอร์เดียวกันบนทั้งสองระบบ)

นอกจากนี้ฉันแทนที่ RAM อย่างสมบูรณ์เมื่อหลายเดือนก่อนโดยไม่มีผลกระทบใด ๆ

ฉันหลงทาง. ฉันจะทำอย่างไรเพื่อคิดออกว่าเกิดอะไรขึ้น

อัพเดท : เย้! เซิร์ฟเวอร์ทั้งสองทำงานอย่างเท่าเทียมกันในขณะนี้ มันเป็นการตั้งค่า "power CRAP" ตามที่ jim_m_somewhere ตั้งชื่อไว้ในความคิดเห็น ตัวเลือก BIOS สำหรับ "การจัดการพลังงาน" อยู่ใน "ประสิทธิภาพสูงสุด" บนเซิร์ฟเวอร์ที่รวดเร็วและ "ตัวควบคุมพลังงานที่ใช้งานอยู่" (การตั้งค่าเริ่มต้นจาก Dell) ในอีกอันหนึ่ง เห็นได้ชัดว่าฉันลืมว่าฉันได้ตั้งค่าที่สองปีที่ผ่านมาและฉันไม่ได้ทำในเซิร์ฟเวอร์ทั้งหมด ขอบคุณทุกคนสำหรับการป้อนข้อมูลที่เป็นประโยชน์ของคุณ!


2
เป็นไปได้ว่าคุณมี RAM ผิดพลาด หากแอปพลิเคชันของคุณมีเครือข่ายที่หนักหน่วงอาจเป็นอะไรก็ได้ในเครือข่ายสแต็ก
Kyle

2
คุณสามารถเปรียบเทียบ "การตั้งค่า CPU ขั้นสูง" ใน BIOS ได้หรือไม่ - อาจเรียกใช้คำสั่ง ipmitool เพื่อทำเช่นนั้นได้หรือไม่ ความเร็วบน RAM เหมือนกันหรือไม่? ฉันคิดว่าคุณได้ตรวจสอบว่าคุณมีแบตเตอรีสำรองในดิสก์ / คอนโทรลเลอร์ ... แค่คิดว่า "ดัง ๆ " ... แรมในกล่องทั้งสองเหมือนกันหรือไม่ ลงทะเบียนหรือไม่ได้ลงทะเบียน ... AH ... คุณได้ตรวจสอบว่า "power CRAP" - ACPI ปิดอยู่ในเซิร์ฟเวอร์ทั้งสองหรือยัง
jim_m_somewhere

2
หากพวกเขากำลังให้บริการข้อมูลเดียวกันสมดุลใด ๆ ที่เกิดขึ้นจาก fw หรือ DNS? สถิติเครือข่ายมีลักษณะอย่างไร การกำหนดค่าจาวาเหมือนกันหรือไม่ java heap มีขนาดเท่ากันหรือไม่ ถ่ายภาพในที่มืดในอันนี้
au_stan

2
การกำหนดค่าซอฟต์แวร์เหมือนกันอย่างแท้จริงหรือไม่? ตัวอย่างเช่น AppArmor เปิดใช้งานในรายการหนึ่งและปิดใช้งานในรายการอื่นหรือไม่ ตรวจสอบข้อผิดพลาด 'dmesg'
Anton Cohen

1
คุณได้ตรวจสอบสายเคเบิลของเครือข่ายพอร์ตบนสวิตช์และคุณยังเห็น iops หรือตรวจสอบสถานะของ HDD ... ขอแสดงความนับถือ

คำตอบ:


6

สองแนวคิดขึ้นอยู่กับว่าคุณต้องการไปกับเรื่องนี้มากแค่ไหน:

  1. สลับดิสก์ของเซิร์ฟเวอร์ทั้งสองและดูว่าประสิทธิภาพความเร็วอยู่บนฮาร์ดแวร์หรือย้ายไปกับซอฟต์แวร์หรือไม่

  2. เปรียบเทียบผลลัพธ์ของ/opt/dell/toolkit/bin/syscfg -o complete-bios-config.outหากคุณสามารถหลอกแพ็คเกจนี้ให้ติดตั้งได้


เอาต์พุตของ dstat แสดงให้เห็นอย่างชัดเจนว่าความแตกต่างของประสิทธิภาพเกิดขึ้นเมื่อไม่มี IO เกิดขึ้น การติดตั้ง syscfg บน Ubuntu 10.4 นั้นค่อนข้างยุ่งยาก ฉันเปรียบเทียบผลลัพธ์ของ dmidecode แล้ว sysctl จะแสดงมากขึ้นหรือไม่ อาจใช้รูปถ่ายของแต่ละหน้าจอ BIOS น้อยกว่าและเปรียบเทียบ ฉันอาจลองสิ่งนี้
the.duckman

1
โดยการเปลี่ยนดิสก์ฉันไม่ได้หมายถึงการตรวจสอบ IO แต่ถ้ามันเป็นซอฟต์แวร์ (mis) การกำหนดค่าที่ทำให้เกิดความช้า (ตัวอย่างพารามิเตอร์เคอร์เนลคี่)
chutz

3

ความเป็นไปได้มากขึ้นในการส่งออกและความแตกต่าง:

  • sysctl -a (ตรวจสอบว่าเคอร์เนลสามารถปรับแต่งได้เหมือนกัน)
  • cat / proc / ขัดจังหวะ (อาจมีบางส่วนของฮาร์ดแวร์ messing up?)
  • รายการเซ็นเซอร์ ipmitool (ยิงยาว แต่ตรวจสอบความแตกต่างระดับต่ำมากเกินไปร้อนเกินไปปัญหาแรงดันไฟฟ้า ฯลฯ )

ขอบคุณไม่มีความแตกต่างอย่างชัดเจนในผลลัพธ์ของคำสั่งเหล่านี้ขออภัย
the.duckman

2
ทุกความแตกต่างที่เห็นได้ชัดถ้าคุณเปรียบเทียบไฟล์โดยใช้ซอฟแวร์ โปรดดูคำถามนี้: ฉันจะแตกต่างสองไฟล์กำหนดค่าอย่างไร
Skyhawk

3

ดูเหมือนว่ามันจะเกี่ยวข้องกับฉัน เมื่อคุณพูดว่า "ปริมาณงานเดียวกัน" คุณวัดสิ่งนี้อย่างไร
คุณกำลังทำการเปรียบเทียบเซิร์ฟเวอร์แต่ละเครื่องโดยตรงโดยใช้การทดสอบแยกแบบแยกกันหรือไม่?
หรือคุณกำลังใช้การโหลดกับ load-balancer และดูผลลัพธ์บนเซิร์ฟเวอร์ทั้งสองหรือไม่?

หากคุณทำอย่างหลัง (การวัดภาระที่วางไว้บนเซิร์ฟเวอร์ทั้งสองผ่านตัวโหลดบาลานซ์) ตัวโหลดบาลานซ์ของคุณอาจไม่แบ่งเวิร์กโหลดเท่า ๆ กันระหว่างเซิร์ฟเวอร์ (ความลาดเอียง 20% สำหรับคู่เซิร์ฟเวอร์ไม่ใช่เรื่องผิดปกติขึ้นอยู่กับวิธี ตัวโหลดบาลานซ์ของคุณจะตัดสินว่าใครได้รับคำขอใด) ซึ่งทำให้เซิร์ฟเวอร์ตัวหนึ่งโหลดมากขึ้นและทำงานได้ไม่ดี

(หากคุณทำการเปรียบเทียบโดยตรงกับเซิร์ฟเวอร์แต่ละเครื่องโดยไม่ใช้ load balancer เป็นตัวกลางและคุณได้ตรวจสอบแล้วว่าทุก ๆ องค์ประกอบเหมือนกัน (ไปจนถึงการตรวจทานแก้ไขจากผู้ผลิต) ระหว่างทั้งสองระบบ ฉันไม่สามารถคิดเหตุผลอื่นใดที่วัดได้สำหรับความแตกต่างด้านประสิทธิภาพระหว่างเซิร์ฟเวอร์ที่เหมือนกัน)


คุณถูกต้องแล้ว load balancer ของเราก็ทำเช่นกัน - เป็นคุณสมบัติจริง ดังนั้นฉันจึงวัดได้หลายวิธีและใช่ฉันยัง "เล่นซ้ำ" คำขอเดียวกันบนเซิร์ฟเวอร์แต่ละเครื่องทีละครั้ง แต่ถึงแม้จะเพียงแค่นำทราฟฟิกสดทั้งหมดไปยังเซิร์ฟเวอร์เดียวในบางครั้งและเปรียบเทียบเวลาที่เซิร์ฟเวอร์แต่ละเครื่องจำเป็นในการเตรียมการตอบสนองให้ผลลัพธ์เช่นเดียวกับการตั้งค่าที่ซับซ้อนมากขึ้น
the.duckman

อืม - ในกรณีนี้ฉันนิ่งงันอย่างเป็นทางการ - ถ้าทุกอย่างเหมือนกันอย่างแท้จริง (และดูเหมือนว่าเราจะได้รับการยืนยันว่าเป็นอย่างนั้น) คุณควรอยู่ในขอบเขตที่เหมาะสมของข้อผิดพลาดเกี่ยวกับหมายเลขประสิทธิภาพ (± 5-7%) - คุณ เห็นรูปแบบมากกว่าสองเท่าและฉันก็ไม่รู้ว่าทำไม: - /
voretaq7

3

ลองใช้เครื่องมือ profiling บางระบบทั้ง profiling เช่นperfหรือ Java โปรไฟล์เหมือนVisualVM

ด้วย perf คุณสามารถทำโปรไฟล์กระบวนการ Java ที่กำลังรันโดย PID หรือทำโปรไฟล์มาตรฐาน ดูทั้งสองระบบดูว่าระบบที่ช้าใช้เวลาอยู่ที่ไหน

apt-get install linux-tools-common linux-tools

แล้วบางสิ่งที่ชอบ:

perf record -e cpu-cycles -p <pid>

หรือ

perf record -a -g <benchmark command>

แล้วก็

perf report

แนวคิดสองประการเกี่ยวกับวิธีที่ระบบสามารถทำงานแตกต่างกัน:

สภาพแวดล้อม: อุณหภูมิของอากาศหรือการไหลของอากาศแตกต่างกันหรือไม่? พวกเขาอยู่ในชั้นวาง? ฉันเคยเห็นระบบทำงานแตกต่างกันในตำแหน่งแร็คที่แตกต่างกันซึ่งเกิดจากการสั่นสะเทือน มีระดับการสั่นสะเทือนที่แตกต่างกันในแต่ละชั้นวาง ไม่น่าเป็นไปได้เมื่อพิจารณาว่ามีการใช้ I / O แทบจะไม่มีเลย แต่ฉันได้เห็นดิสก์ช้าลงเป็น 2MB / วินาทีตามลำดับการเขียนเนื่องจากการสั่นสะเทือนในส่วนของชั้นวาง

ความผิดพลาดของฮาร์ดแวร์: ฮาร์ดแวร์ใด ๆ อาจเป็นความผิดพลาด ใช้การทำโปรไฟล์เพื่อดูว่าอะไรช้า อาจเป็น CPU หรือชิปเซ็ตที่ไม่ดีฮีทซิงค์ไม่ได้ติดตั้งอย่างเหมาะสมพัดลมที่เสียสมดุลทำให้เกิดการสั่นสะเทือนพัดลมที่ล้มเหลวแม้แต่ PSU ที่ไม่ดี ลองแลกเปลี่ยนสิ่งต่าง ๆ ที่สลับได้ง่าย


1

ทำไมไม่มีใครแนะนำ 'sysprof' ..

นี่คือสิ่งที่มันถูกออกแบบมาสำหรับ

หรืออืมมความคิดที่สอง ... ลองบรรจุข้อ จำกัด ใน /etc/security/limits.conf

ลองทั้งคู่

หากคุณไม่ได้รับอะไรเลย ... คุณมีปัญหาด้านความปลอดภัยส่วนใหญ่หรือมีข้อบกพร่องทางกายภาพ

ดูเพิ่มเติม: เซิร์ฟเวอร์ linux ของฉัน "จำนวนกระบวนการที่สร้าง" และ "สวิตช์บริบท" เติบโตอย่างรวดเร็วอย่างไม่น่าเชื่อ

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