Wie finde ich die Ursache für einen großen Leistungsunterschied zwischen zwei identischen Ubuntu-Servern?


9

Ich verwende zwei Dell R410- Server im selben Rack eines Rechenzentrums (hinter einem Load Balancer). Beide haben dieselbe Hardwarekonfiguration, führen Ubuntu 10.4 aus, haben dieselben Pakete installiert und führen dieselben Java-Webserver aus (keine andere Last), und ich sehe einen erheblichen Leistungsunterschied zwischen beiden.

Der Leistungsunterschied zeigt sich am deutlichsten in den durchschnittlichen Antwortzeiten beider Server (gemessen in der Java-App selbst, ohne Netzwerklatenzen): Einer von ihnen ist 20 bis 30% schneller als der andere, sehr konsistent.
Früher habe ich dstatherausgefunden, ob es mehr Kontextwechsel, E / A, Tauschen oder ähnliches gibt, aber ich sehe keinen Grund für den Unterschied. Bei gleicher Arbeitslast (kein Austausch, praktisch keine E / A) ist die CPU-Auslastung und -Last auf einem Server höher.

Der Unterschied scheint also hauptsächlich an die CPU gebunden zu sein, aber während ein einfacher CPU-Benchmark mit sysbench(bei ausgeschalteter anderer Last) einen Unterschied ergab, betrug er nur 6%. Vielleicht liegt es also nicht nur an der CPU, sondern auch an der Speicherleistung.

Bisher habe ich überprüft:

  • Firmware-Revisionen aller Komponenten (identisch)
  • BIOS-Einstellungen (Ich habe einen Dump mit verwendet dmidecode, und das zeigte keine Unterschiede)
  • Ich habe verglichen /proc/cpuinfo, kein Unterschied.
  • Ich habe die Ausgabe von verglichen cpufreq-info, kein Unterschied.
  • Java / JVM-Parameter (gleiche Version und Parameter auf beiden Systemen)

Außerdem habe ich den RAM vor einigen Monaten komplett ausgetauscht, ohne dass dies Auswirkungen hatte.

Ich bin verloren. Was kann ich tun, um herauszufinden, was los ist?

UPDATE : Yay! Beide Server arbeiten jetzt gleich. Es waren die "Power CRAP" -Einstellungen, wie jim_m_somewhere sie in den Kommentaren nannte. Die BIOS-Optionen für "Power Management" waren auf dem schnellen Server "Maximum Performance" und auf dem anderen Server "Active Power Controller" (Standardeinstellung von Dell). Offensichtlich habe ich vergessen, dass ich diese Einstellung vor zwei Jahren vorgenommen habe, und das habe ich nicht auf allen Servern getan. Vielen Dank an alle für Ihre sehr hilfreichen Beiträge!


2
Möglicherweise haben Sie einen fehlerhaften RAM. Wenn Ihre Anwendung netzwerklastig ist, kann sich alles auf dem Netzwerkstapel befinden.
Kyle

2
Können Sie die "Erweiterten CPU-Einstellungen" im BIOS vergleichen? - Möglicherweise können Sie dazu einen ipmitool-Befehl ausführen? Ist die Geschwindigkeit im RAM gleich? Ich gehe davon aus, dass Sie überprüft haben, ob Sie eine Batterie-Sicherung auf Festplatten / Controllern haben ... nur "laut" denken ... ist der RAM auf beiden Boxen gleich? registriert oder nicht registriert ... AH ... haben Sie überprüft, ob "Power CRAP" - ACPI auf beiden Servern ausgeschaltet ist?
jim_m_somewhere

2
Wenn sie dieselben Daten liefern, wird dann ein Lastausgleich von einem fw oder dns durchgeführt? Wie sehen die Netzwerkstatistiken aus? Sind auch die Java-Konfigurationen identisch? Ist die Größe des Java-Heaps gleich? Schießen im Dunkeln auf diesem.
Au_stan

2
Ist die Softwarekonfiguration wirklich identisch? Ist AppArmor beispielsweise auf einem aktiviert und auf dem anderen deaktiviert? Überprüfen Sie auch 'dmesg' auf Fehler.
Anton Cohen

1
Sind Sie das kabelgebundene Kabel des Netzwerks, den Anschluss am Switch und auch die iops oder überprüfen Sie den Zustand der Festplatte ... Grüße

Antworten:


6

Zwei Ideen, je nachdem, wie weit Sie damit gehen möchten:

  1. Tauschen Sie die Festplatten beider Server aus und prüfen Sie, ob die Geschwindigkeitsleistung auf der Hardware verbleibt oder sich mit der Software ändert.

  2. Vergleichen Sie die Ausgabe von, /opt/dell/toolkit/bin/syscfg -o complete-bios-config.outwenn Sie dieses Paket irgendwie zur Installation austricksen können.


Die Ausgabe von dstat zeigte ziemlich deutlich, dass der Leistungsunterschied auch dann auftritt, wenn keine E / A stattfindet. Die Installation von syscfg unter Ubuntu 10.4 scheint in der Tat schwierig zu sein. Ich habe die Ausgabe von dmidecode bereits verglichen. Würde sysctl mehr anzeigen? Vielleicht ist es weniger Arbeit, Fotos von jedem BIOS-Bildschirm zu machen und sie zu vergleichen. Ich könnte es versuchen.
the.duckman

1
Durch das Austauschen der Festplatten wollte ich nicht die E / A untersuchen, sondern ob es sich um eine (falsche) Softwarekonfiguration handelt, die die Langsamkeit verursacht (z. B. ein ungerader Kernel-Parameter).
Chutz

3

Weitere Möglichkeiten zur Ausgabe und Diff:

  • sysctl -a (stellen Sie sicher, dass die Kernel-Tuneables gleich sind)
  • cat / proc / interrupts (Vielleicht ist ein anderes Stück Hardware durcheinander?)
  • Liste der ipmitool-Sensoren (lange Sicht, aber auf geringere Pegelunterschiede, Überhitzung, Spannungsprobleme usw. prüfen)

Vielen Dank, leider kein offensichtlicher Unterschied in der Ausgabe dieser Befehle.
the.duckman

2
Alle Unterschiede sind offensichtlich, wenn Sie Dateien mit Software vergleichen . Bitte beziehen Sie sich auf diese Frage: Wie unterscheide ich zwei Konfigurationsdateien?
Skyhawk

3

Das klingt so, als wäre es ein mit mir verwandter Load-Balancer. Wenn Sie "gleiche Arbeitsbelastung" sagen, wie messen Sie dies?
Vergleichen Sie jeden Server direkt, indem Sie eine Testlast isoliert anwenden?
oder Wenden Sie eine Last auf den Load Balancer an und sehen Sie sich die Ergebnisse auf beiden Servern an?

Wenn Sie Letzteres tun (Messen der Last, die auf beiden Servern über den Load Balancer platziert wird), teilt Ihr Load Balancer die Arbeitslast möglicherweise nicht exakt gleichmäßig auf die Server auf (ein 20% iger Versatz für ein Serverpaar ist nicht ungewöhnlich, je nachdem, wie Ihr Load Balancer entscheidet, wer welche Anforderungen erhält. Dies führt dazu, dass ein Server mehr Last aufnimmt und daher eine schlechte Leistung erbringt.

(Wenn Sie jeden Server einzeln direkt vergleichen, ohne den Load Balancer als Vermittler zu verwenden, und Sie überprüft haben, dass jede Komponente (bis auf Herstellerrevisionen) zwischen beiden Systemen identisch ist, bin ich ratlos - Ich kann mir keinen anderen messbaren Grund für diese Art von Leistungsunterschied zwischen ansonsten identischen Servern vorstellen.


Sie haben Recht, unser Load Balancer macht das auch - es ist eigentlich eine Funktion. Ich habe also auf viele Arten gemessen und ja, ich habe sogar die gleichen Anforderungen auf jedem Server einzeln einmal "wiedergegeben". Aber selbst wenn Sie einfach den gesamten Live-Verkehr für einige Zeit auf einen einzelnen Server übertragen und die Zeit vergleichen, die jeder Server zur Vorbereitung der Antwort benötigt, erhalten Sie dieselben Ergebnisse wie bei den komplexeren Setups.
the.duckman

Hmm - in diesem Fall bin ich offiziell ratlos - wenn alles wirklich identisch ist (und wir scheinen dies ziemlich gut bestätigt zu haben), sollten Sie innerhalb einer angemessenen Fehlerquote bei den Leistungszahlen (± 5-7%) liegen - Sie Ich sehe Variationen von mehr als dem Doppelten, und ich habe keine Ahnung warum: - /
voretaq7

3

Probieren Sie einige Profiling-Tools aus, entweder System-Profiling wie perf oder Java-Profiling wie VisualVM .

Mit perf können Sie entweder den laufenden Java-Prozess anhand der PID oder einen Benchmark profilieren. Schauen Sie sich beide Systeme an und sehen Sie, wo das langsame System seine Zeit verbringt.

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

Dann so etwas wie:

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

oder

perf record -a -g <benchmark command>

dann

perf report

Ein paar Ideen, wie Systeme anders funktionieren können:

Umgebung: Ist die Lufttemperatur oder der Luftstrom unterschiedlich? Sind sie in Gestellen? Ich habe gesehen, dass Systeme in verschiedenen Rackpositionen aufgrund von Vibrationen unterschiedliche Leistungen erbringen. In jedem Rack gibt es unterschiedliche Vibrationsstufen. Es ist unwahrscheinlich, wenn man bedenkt, dass fast keine E / A verwendet wird. Ich habe jedoch gesehen, dass Festplatten aufgrund von Vibrationen in Teilen eines Racks auf sequenzielle Schreibvorgänge von 2 MB / s verlangsamt wurden.

Hardwarefehler: Jede Hardware kann fehlerhaft sein. Verwenden Sie die Profilerstellung, um zu sehen, was langsam ist. Es könnte sich um eine fehlerhafte CPU oder einen fehlerhaften Chipsatz handeln, einen nicht richtig angeschlossenen Kühlkörper, aus dem Gleichgewicht geratene Lüfter, die Vibrationen verursachen, ausgefallene Lüfter oder sogar ein schlechtes Netzteil. Versuchen Sie, Dinge auszutauschen, die leicht auszutauschen sind.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.