Praktische Methoden zur Analyse und Fehlerbehebung von Leistungsproblemen

Einige Studenten von Knowledge Planet sind auf ein Leistungsproblem gestoßen. Das Problem ist wie folgt: Statische Ressourcen werden in Nginx platziert, und die Größe der Ressourcen beträgt etwa zehn M. Nginx wird mit Docker bereitgestellt. Während des Drucktests wurde festgestellt, dass die Das Laden statischer Ressourcen war sehr langsam. Fragen Sie in der Gruppe, wie Fehler behoben und analysiert werden können.

Dies ist ein sehr häufiges Leistungsproblem, das normalerweise durch unzureichende Ressourcen wie Bandbreite und Speicher verursacht wird. Natürlich kann die Analyse von Leistungsproblemen nicht willkürlich auf der Grundlage von Vermutungen und Erfahrungen durchgeführt werden, sondern sollte mit technischem Denken analysiert und überprüft und schließlich optimiert und verifiziert werden .

In diesem Artikel werde ich, kombiniert mit meiner eigenen Erfahrung, über die Methoden der Leistungsproblemanalyse und Fehlerbehebung in der Praxis sprechen.

Analysekette für Leistungsprobleme

Werfen wir einen Blick auf die Mindmap unten, die Analysemethode, die ich häufig verwende, wenn ich bei meiner Arbeit auf Leistungsprobleme stoße. Ich nenne sie Analysekette.

Wie in der Abbildung oben gezeigt, sollte die Analysekette wie folgt aussehen (die Daten dienen nur als Referenz):

  • Beobachten Sie die Leistung des Problems : Testumgebung, Dienstkonfiguration 2C4G, 20-200 Parallelitätsinkremente, Parallelität erreicht 100, RT steigt, 20 % falsche Anfragen;

  • Beweislinks finden : Finden Sie heraus, wo ein Problem vorliegt, z. B. volle Bandbreite, 100 % Speicherauslastung, viele Anforderungszeitüberschreitungen, Fehlerberichte und abnormale Stapel.

  • Analysieren Sie die Ursache des Problems : Warum treten diese Probleme auf? Die allgemeine Analyse erfolgt von oben nach unten, d. h. Skript-Daten-Szenario-Konfigurationscode-Systemarchitektur;

  • Überprüfung der Leistungsoptimierung : Verwenden Sie Überwachung und Protokolle, um mithilfe der Eliminierungsmethode schnell mögliche Ursachen zu finden (erfordert umfangreiche Erfahrung als Basis) und debuggen und überprüfen Sie dann die Vermutungen. Wenn kein Problem vorliegt, ändern Sie das Problem, testen und überprüfen Sie es erneut und beobachten Sie rechtzeitig die Überwachung und Protokolle, um zu bestätigen, dass das Problem behoben wurde.

Praxisbeispiel zur Leistungsanalyse

Nehmen wir als Beispiel die Frage des Studenten am Anfang des Artikels: Wie sollten wir sie analysieren?

In diesem Stresstestszenario werden zunächst statische Dateien geladen. Zu unseren üblichen statischen Ressourcen gehören hauptsächlich Bilder oder einige Front-End-Seiten. Zweitens kann bei einer Ressourcengröße von 10+M davon ausgegangen werden, dass es sich bei dieser statischen Ressource um eine handelt Bild oder kurzes Video; In der Problembeschreibung wird erwähnt, dass Nginx mit Docker bereitgestellt wird und statische Ressourcen auf Nginx gemountet werden. Daher müssen die Speicherressourcen von Nginx berücksichtigt werden. Warum?

Während des Stresstests werden im Allgemeinen mehrere Anfragen verschiedener Benutzer simuliert, um auf die URL zuzugreifen. Wenn für jede Anfrage unterschiedliche Bilder zurückgegeben werden und die Parallelität relativ hoch ist, ist der E / A-Druck des Dienstes relativ hoch. Es gibt eine weitere Situation, die berücksichtigt werden muss, nämlich die Netzwerkbandbreitenressourcen zwischen dem Stresstest-Cluster und dem zu testenden Dienst. Wenn die Bandbreite nur 100 M beträgt, beträgt der theoretische Spitzenwert der tatsächlichen Übertragungseffizienz nur 12,5 M/S . In diesem Szenario tritt ein Problem auf: Selbst wenn die Parallelität hoch ist, kann der tatsächliche TPS <= 1 sein.

Der Fehler, den viele Teststudenten bei der Durchführung von Leistungstests häufig machen, besteht darin, die tatsächlichen Geschäftsszenarien sowie die Konfiguration und Netzwerkbandbreite des zu testenden Dienstes zu ignorieren und hirnlos viele gleichzeitige Anforderungen zu simulieren. Dies ist weder wissenschaftlich noch vernünftig. Tatsächlich sollten spezifische Geschäftsszenarien und die Konfiguration des zu testenden Dienstes berücksichtigt und dann Skripte entworfen werden , beispielsweise das allgemeine Seckill-Szenario des E-Commerce-Geschäfts. Zu diesem Zeitpunkt kann eine hohe Parallelität simuliert werden.

Bei den oben genannten Problemen sind zwei Punkte zu berücksichtigen: Der erste besteht darin, relativ große statische Ressourcen auf Nginx bereitzustellen. Eine vernünftigere technische Lösung sollte statische Ressourcen oder große Dateien sein und spezielle Dateispeicherdienste wie Bilder verwenden in CND gespeichert werden. Auch der zweite Punkt wird leicht übersehen: Um die Leistung zu verbessern, ist es am besten, die Datei vor der Übertragung zu komprimieren und sie dann auf der Anzeigeebene zu dekomprimieren. Die Voraussetzung hierfür ist natürlich, dass keine hohe Auflösung erforderlich ist für das Bild.

In vielen Artikeln im Internet wird beschrieben, wie man Stresstest-Tools verwendet, Testdaten vorbereitet und Parallelitätsfähigkeiten simuliert, aber meiner Meinung nach sind das nur Mittel. Der wichtigste Teil des Leistungstests ist die Phase der Leistungsanforderungsanalyse. In der Analysephase sollten die Merkmale des zu testenden Geschäftsszenarios so weit wie möglich berücksichtigt werden, ob die Systemarchitektur und das technische Implementierungsschema dahinter angemessen sind, und ob es potenzielle Leistungsengpässe gibt. Die Druckprüfung ist nur ein Mittel zur Überprüfung, nicht der Zweck der Überprüfung .

In den letzten Jahren ist die Verlagerung des Testens nach links in aller Munde. Neben der eingebauten Qualität und der Qualitätszugriffskontrolle sind die Analyse und Bewertung der Anforderungsphase sowie die Erstellung einer Bottom-up-Strategie tatsächlich wichtiger.

Endlich: Das vollständige Video-Tutorial zum Softwaretest unten wurde aussortiert und hochgeladen, und Freunde, die es benötigen, können es sich selbst besorgen [Garantiert 100 % kostenlos]

Dokumentation zum Softwaretest-Interview

Wir müssen lernen, um einen hochbezahlten Job zu finden. Die folgenden Interviewfragen sind die neuesten Interviewmaterialien von erstklassigen Internetunternehmen wie Ali, Tencent und Byte, und einige Byte-Chefs haben maßgebliche Antworten gegeben. Vervollständigen Sie diesen Satz Die Interviewmaterialien glauben, dass jeder einen zufriedenstellenden Job finden kann.

Ich denke du magst

Origin blog.csdn.net/wx17343624830/article/details/132667615
Empfohlen
Rangfolge