Freigeben über


Leistungstests und Antipattern für Cloudanwendungen

Leistungs-Antipattern, ähnlich wie Entwurfsmuster, sind häufige fehlerhafte Prozesse und Implementierungen innerhalb von Organisationen. Dies sind gängige Methoden, die wahrscheinlich Skalierbarkeitsprobleme verursachen, wenn eine Anwendung unter Druck steht. Das Bewusstsein für diese Praktiken kann dazu beitragen, die Kommunikation von allgemeinen Konzepten zwischen Softwareexperten zu vereinfachen, und Das Wissen über Antipattern kann hilfreich sein, wenn Code überprüft oder Leistungsprobleme diagnostiziert werden.

Hier ist ein gängiges Szenario: Eine Anwendung verhält sich bei Leistungstests gut. Sie wird für die Produktion freigegeben und beginnt mit der Verarbeitung realer Workloads. An diesem Punkt beginnt es, schlecht zu arbeiten – das Ablehnen von Benutzeranforderungen, das Zurückstellen oder Auslösen von Ausnahmen. Das Entwicklungsteam steht dann vor zwei Fragen:

  • Warum wurde dieses Verhalten während des Tests nicht angezeigt?
  • Wie kann man das beheben?

Die Antwort auf die erste Frage ist einfach. Es ist schwierig, echte Benutzer in einer Testumgebung zusammen mit ihren Verhaltensmustern und den Arbeitsvolumen zu simulieren, die sie möglicherweise ausführen. Die einzige völlig sichere Möglichkeit, zu verstehen, wie sich ein System unter Last verhält, besteht darin, es in der Produktion zu beobachten. Um klar zu sein, empfehlen wir nicht, dass Sie Leistungstests überspringen sollten. Leistungstests sind entscheidend für das Abrufen von Basisleistungsmetriken. Sie müssen jedoch darauf vorbereitet sein, Leistungsprobleme zu beobachten und zu beheben, wenn sie im Live-System auftreten.

Die Antwort auf die zweite Frage, wie das Problem behoben werden kann, ist weniger einfach. Eine beliebige Anzahl von Faktoren kann dazu beitragen, und manchmal manifestiert sich das Problem nur unter bestimmten Umständen. Die Instrumentierung und Protokollierung sind wichtig, um die Ursache zu finden, aber Sie müssen auch wissen, wonach Sie suchen müssen.

Basierend auf unseren Engagements mit Microsoft Azure-Kunden haben wir einige der häufigsten Leistungsprobleme identifiziert, die Kunden in der Produktion sehen. Für jeden Antipattern beschreiben wir, warum die Antipattern in der Regel auftritt, Symptome der Antipattern und Techniken zum Beheben des Problems. Außerdem stellen wir Beispielcode bereit, der sowohl die Antipattern als auch eine vorgeschlagene Skalierbarkeitslösung veranschaulicht.

Einige dieser Antipattern scheinen offensichtlich zu sein, wenn Sie die Beschreibungen lesen, aber sie treten häufiger auf, als Sie denken. Manchmal erbt eine Anwendung ein Design, das lokal funktioniert hat, aber nicht in der Cloud skaliert wird. Oder eine Anwendung kann mit einem sehr sauberen Design beginnen, aber wenn neue Features hinzugefügt werden, schleicht sich eine oder mehrere dieser Antipattern ein. Unabhängig davon hilft Ihnen dieses Handbuch, diese Antipattern zu identifizieren und zu beheben.

Katalog mit Antimustern

Hier ist die Liste der Antipattern, die wir identifiziert haben:

Antimuster BESCHREIBUNG
Ausgelastete Datenbank Das Entladen zu viel Verarbeitung in einen Datenspeicher.
Ausgelastetes Front-End Verschieben ressourcenintensiver Aufgaben auf Hintergrundthreads.
Zu viele E/A-Vorgänge Fortlaufendes Senden vieler kleiner Netzwerkanforderungen.
Irrelevante Abrufe Das Abrufen von mehr Daten als erforderlich, was zu unnötigen E/A-Vorgängen führt.
Ungeeignete Instanziierung Wiederholt Objekte erstellen und zerstören, die gemeinsam genutzt und wiederverwendet werden sollen.
Monolithische Persistenz Verwenden desselben Datenspeichers für Daten mit sehr unterschiedlichen Verwendungsmustern.
Keine Zwischenspeicherung Fehler beim Zwischenspeichern von Daten.
lauter Nachbar Ein einzelner Mandant verwendet eine unverhältnismäßige Menge der Ressourcen.
Wiederholungssturm („Retry Storm“) Das zu häufige Wiederholen fehlgeschlagener Anfragen an einen Server.
Synchrone E/A-Vorgänge Blockieren des aufrufenden Threads, während E/A-Vorgänge abgeschlossen werden.

Nächste Schritte

Weitere Informationen zur Leistungsoptimierung finden Sie unter Performance Efficiency im Well Architected Framework