Oft läuft eine Installation unserer debian-stabilen Onsite-Anwendung in einer virtuellen Maschine - normalerweise in VMware ESXi. Im Allgemeinen haben wir keinen Einblick in die Virtualisierungsumgebung oder haben keinen Einfluss darauf und haben keinen Zugriff auf z. B. den VMware vCenter-Client oder einen gleichwertigen Client. Ich konzentriere mich hier auf VMware, da dies bei weitem das am häufigsten auftretende ist.
Wir würden gerne:
- Informieren Sie den VMware-Administrator eines Kunden: Sie können unsere Anwendung z. B. in Ihrer VMware ESX-Umgebung ausführen, sofern sie die Leistungskriterien X, Y und Z erfüllt.
- Sie können feststellen, ob die Kriterien X, Y und Z tatsächlich kontinuierlich erfüllt werden (z. B. auch jetzt ), selbst auf einem laufenden System (wir können unsere Anwendung nicht stoppen und Benchmarks ausführen, und ein anfänglicher Benchmark wird nicht ausreichen, da die Leistung in virtuelle Umgebungen ändern sich im Laufe der Zeit).
- Wenn die Kriterien X, Y und Z erfüllt sind, verfügen wir über ausreichende virtuelle Hardware-Ressourcen, um unsere Anwendung mit zufriedenstellender Leistung auszuführen.
Was sind nun X, Y und Z?
Wir haben immer wieder festgestellt, dass das Problem bei Performance-Problemen nicht bei unserer Anwendung, sondern bei der Virtualisierungsumgebung liegt. Eine andere virtuelle Maschine benötigt z. B. Tonnen von CPU, Arbeitsspeicher oder das SAN, auf dem die Festplatten tatsächlich gespeichert sind, wird von etwas anderem als unserer Anwendung stark beansprucht. Wir haben derzeit keine Möglichkeit, dies zu beweisen oder zu widerlegen.
Theoretisch könnte es auch sein, dass unsere Bewerbung manchmal langsam ist ... ;-)
Wie ermittelt man die Hauptursache für unsere Leistungsprobleme: Virtuelle Umgebung oder unsere Anwendung?
In der Regel gibt es drei Bereiche für Leistungsprobleme: CPU, Arbeitsspeicher und Festplatten-E / A.
Zentralprozessor
In z. B. VMware kann der Administrator Reservation und Limit in MHz angeben, ist jedoch z. B. 512 MHz auf einem ESX-Host genauso wie 512 MHz auf einem anderen ESX-Host, möglicherweise in einem völlig anderen ESX-Cluster?
Und wie misst man, ob wir das tatsächlich bekommen? Während unsere Anwendung ausgeführt wird, können wir möglicherweise feststellen, dass wir auf 4 CPUs eine CPU-Auslastung von 212% haben. Liegt das daran, dass unsere Anwendung viel leistet oder dass eine andere VM auf demselben Host eine CPU-intensive Aufgabe ausführt und die gesamte CPU nutzt?
Gedächtnis (Ballonfahren?)
Wenn wir beispielsweise nach 16 GB RAM fragen, das häufig konfiguriert ist, aber aufgrund der Ballonbildung tatsächlich nur 4 GB zur Verfügung stehen, ist die Leistung unserer Anwendung überraschenderweise schlecht.
Man kann die VMware-Tools nach dem aktuellen Ballooning fragen, aber wir haben festgestellt, dass es oft lügt (oder zumindest ungenau ist). Wir haben Beispiele gesehen, bei denen das Betriebssystem davon ausgeht, dass insgesamt 16 GB RAM vorhanden sind, die Summe des residenten Arbeitsspeichers (RSS) aller Prozesse 4 GB RAM beträgt, aber nur 2 GB RAM frei sind, selbst wenn VMware Tools angibt, dass es 0 Ballooning gibt: - (
Nur RSS zu addieren ist ebenfalls nicht gültig, da es leicht möglich ist, gemeinsam genutzten Arbeitsspeicher (z. B. Copy-on-Write-Speicher) zu verwenden, sodass 512 MB + 512 MB nicht unbedingt 1 GB bedeuten, sondern etwas weniger bedeuten können. Man kann also nicht einfach RSS von allen Prozessen subtrahieren, um ein Maß dafür zu erhalten, wie viel RAM frei sein soll, und so Ballonfahrten zuverlässig erkennen. Man kann einige Fälle von Ballonbildung erkennen, aber es gibt andere Fälle, in denen Ballonbildung wirksam ist, aber mit dieser Methode nicht erkannt werden kann.
Festplatten-E / A
Ich vermute, wir könnten die Anzahl der Lese- und Schreibvorgänge auf der Festplatte, die Anzahl der gelesenen und geschriebenen Bytes und die E / A-Wartezeit in% über die Zeit grafisch darstellen. Aber liefert uns das ein genaues Bild der Festplatten-E / A? Ich stelle mir vor, dass, wenn ein Bitcoin Miner auf einer anderen VM mit der gesamten CPU ausgeführt wird, unsere E / A-Wartezeit in% steigt, auch wenn das zugrunde liegende SAN genau die gleiche Leistung erbringt, einfach weil unsere CPU-Ressourcen ausfallen und daher E / A-Wartezeit ( was in% gemessen wird ) steigt.
In welcher Sprache können wir also beispielsweise einen VMware-Administrator beschreiben, welche Leistung wir benötigen, und zwar portabel und messbar?
quelle
"It runs fine with x, y, and z"
ist nicht präzise genug. Sie müssen Ihren Kunden genau mitteilen können, was Ihre Anwendung erfordert. Wenn sie Ihnen diese Ressourcen geben und die Anwendung schlecht"What do we need from a resource perspective?"
"Why is it performing poorly even though the proper resources have been allocated?"
Antworten:
Im Ernst, die meisten VMware-Administratoren sind nicht gut darin: Schlechtes Verständnis des Ressourcenmanagements, oft keine Linux-Kenntnisse (es hilft) und mangelnde Zeitbandbreite. Ich finde, dass die meisten internen Administratoren Schwierigkeiten haben, umfassende Kenntnisse über Virtualisierung zu erhalten.
Zum Glück gibt es ein Buch, das Sie lesen können !
Die meisten VMware-Umgebungen sind nicht besonders gut: Schlechtes Cluster-Design, schlechte Ressourcenplanung , minderwertiger Speicher (z. B. Synology NAS), falsch konfigurierter HA, keine Überwachung oder Patches.
VMware als Organisation versagt uns: Sie sind besonders schlecht darin, aktuelle Informationen zu verbreiten und Best Practices zu fördern. Die einfache Suche nach häufig gestellten Fragen führt zu Ergebnissen aus 2009 und älteren Versionen von VMware, obwohl sich Prozesse und Designs im Laufe der Zeit geändert haben.
All diese Dinge werden gegen Sie arbeiten.
Sie sollten die tatsächlichen Anforderungen Ihrer Lösung ermitteln. In der Lage zu sein, genau anzugeben, dass Ihre Appliance Folgendes erfordert: 2 vCPU, 8 GB RAM und 500 IOPs Speicherleistung .
Der andere Ansatz besteht darin, eine gesunde oder ideale Umgebung zu beobachten und die Messdaten von dort zu extrapolieren.
Sie haben Probleme mit bestimmten Bereitstellungen beschrieben. Was waren die Probleme und Engpässe?
Ein Beispiel für eine VM in der richtigen Größe:
Ein Exchange-Server für eine Organisation mit 300 Benutzern.
Beispiele für die Überwachung von VM-Ressourcen.
Good-ish: - VM hat die richtige Größe. - Die CPU ist im gesamten Cluster überlastet, es kommt jedoch nicht zu Konflikten.
Schlecht:
quelle