4 Bottleneck-Analyse in Mehrschichtarchitekturen
4.1.2 Bottleneck-Analyse mit Hilfe von White-Box-Tests
Bei der Bottleneck-Analyse mit Hilfe von White-Box-Tests wird genutzt, dass das zu testende System bekannt ist und die eingesetzten Server und Komponenten beobachtet werden können. Dies ermöglicht, Testergebnisse und das Verhalten der getesteten Umgebung zu korrelieren und somit mögliche Engpässe zu erkennen.
Die im Beispiel der Webanwendung vorausgesetzten Komponenten beeinflussen die Netzwerk- und Serverantwortzeiten. Die Zeit, die Webserver, Applikationsserver, Authentifizierungsserver und Datenbankserver benötigen, um eine Anfrage zu bearbeiten, werden der Serverantwortzeit zugeordnet. Firewalls und andere Netzwerkeinflüsse fallen unter Netzwerkantwortzeit.
Jede dieser Komponente kann durch Hilfe von Performancezählern, die durch Betriebssysteme oder zusätzliche Tools zur Verfügung gestellt werden können, beobachtet werden. Diese Performancezähler geben zum Beispiel Auskunft über den aktuellen Hauptspeicherverbrauch, die aktuelle CPU-Auslastung, Auslastung der Netzwerkverbindung und vieles mehr. Werden diese Performancezähler während der Tests aufgezeichnet und mit Zeitstempeln versehen, ist es möglich, diese Daten mit den ermittelten Antwortzeiten zu verknüpfen. Mit Hilfe dieser korrelierten Daten ist es möglich, aber nicht sicher, Rückschlüsse auf mögliche Engpässe ziehen zu können.
4.1.2.1 Aussagekraft der korrelierten Daten
Nach Durchführung der Last- und Performancetests mit zusätzlicher Aufzeichnung von Performancezählern der Systemkomponenten erhält man eine Vielzahl an Testfällen und ermittelten Testdaten. Diese Daten müssen nun auf Engpässe im System untersucht werden.
Startet man die Analyse mittels eines Top-down-Ansatzes, so wählt man als Ausgangspunkt die ermittelten Antwortzeiten und sucht den Zeitraum, zu dem die Antwortzeiten der Anfragen nicht mehr den geforderten Ansprüchen entsprechen. Nun werden die Performancezähler in diesem Zeitraum ausgewertet. Hier gibt es nun eine Vielzahl von möglichen Fällen, die auftreten können.
Um die Aussagekraft der korrelierten Daten zu diskutieren werden drei Fälle ausgewählt. Alle nicht erwähnten Daten werden als Normalzustand angenommen.
4.1.2.1.1 Datenbankserver-CPU ist im gewählten Zeitraum ständig auf 100% Leistung
Dieser Fall ist sehr eindeutig. Der Datenbankserver ist der Engpass der gesamten Webanwendung, da er Aufgaben, die mit den gesendeten Anfragen verknüpft sind, nicht in geforderter Geschwindigkeit bearbeiten kann.
4.1.2.1.2 Performancezähler liefern zeitweise stark erhöhte Werte
Welche Aussage kann man daraus ziehen? Dies ist nicht einfach zu beantworten. Es besteht nur die Möglichkeit, Vermutungen anzustellen, um diese durch weitere Daten zu bestätigen oder zu widerlegen.
Die Systeme stehen unter Last, doch ist diese Last nur von den Prozessen, die für die Webanwendung notwendig sind oder laufen Betriebssystemprozesse, wie Swapping von Hauptspeicherseiten, Datenbankbackups oder werden große Datenmengen von anderen Nutzern über das Netzwerk gesendet?
Diese Fragen kann man erst beantworten, wenn man eine genauere Analyse aller Umgebungsparameter durchführt und die Performancezähler bis ins kleinste Detail ausreizt. Das Ausreizen der Performancezähler führt aber zu weiteren Problemen. Es entstehen noch mehr Daten, die verarbeitet und interpretiert werden müssen. Es besteht die Gefahr, die richtige Korrelation der Daten zu verlieren. Der Weg, die Aussagekraft von ganz speziellen Performancezählern auf das Gesamtsystem "hochzurechnen", ist ebenfalls sehr wagemutig.
4.1.2.1.3 Alle Performancezähler liefern Normalwerte
Die Antwortzeiten der Last- und Performancetests sind außerhalb der geforderten Zeiten, aber alle Performancezähler liefern Normalwerte. Das heißt, keine Komponente scheint überlastet zu sein und schränkt somit die Performance des Gesamtsystems ein - trotzdem scheint es einen Engpass zu geben.
Als Beispiel für diesen Fall sei die Fehlkonfiguration eines Servers genannt. Die Einschränkungen von gleichzeitig aktiven Verbindungen in einer Webserver- oder Firewall-konfiguration kann zu so einem Szenario führen. Es werden zu wenig Anfragen angenommen, um eine erhöhte Last auf folgenden Komponenten zu erzeugen. Trotzdem werden die durchgeführten Tests nicht erfolgreich enden, da nicht die gewünschte Menge an Anfragen in der geforderten Zeit ausgeführt werden können, da sie entweder lange in einer Warteschlange hängen oder die Verarbeitung mit Fehlern abgebrochen wird.
Dieser Fall kann bei dieser Testmethode nicht, bzw. nur schwer oder mit viel Erfahrung erkannt werden. Eine Möglichkeit der Erkennung wäre die Auswahl der für diesen Fall zutreffenden Performancezähler - Länge der Warteschlangen oder derzeitige und maximale Anzahl von Verbindungen an den verschiedensten Servern.
Hier liegen eindeutig die Grenzen der Bottleneck-Analyse mit Hilfe von Performancezählern, da jeder möglicher Fehlerfall durch die entsprechenden Performancezähler abgedeckt werden müsste, was zu einer zu großen Menge von Performancezählern führen würde, schon weil nicht alle möglichen Fehler im Vorhinein bekannt sind.
4.1.2.2 Vorteile
- Die Bottleneck-Analyse mit Hilfe von Performancezählern für Komponenten der Multischichtarchitektur ist in ihren Grenzen, einfach zu realisieren. Monitoren dieser Komponenten kann in Echtzeit, manuell oder durch Protokollieren der Performancezähler geschehen.
- Einige Last- und Performancetools unterstützen Monitoren von Servern und korrelieren diese Daten bereits mit den eigentlichen Testdaten.
- Für spezielle Engpässe im Gesamtsystem liefert diese Methode schnell erkennbare Anhaltspunkte.
4.1.2.3 Nachteile
Es existieren aber auch schwerwiegende Nachteile bei der Bottleneck-Analyse mit Hilfe von Performancezählern.
- Es können nur spezielle Engpässe erkannt werden, bei denen einzelne System-komponenten wirklich überlastet sind. Die Mehrzahl an Engpässen kann auf diese Weise nicht aufgedeckt werden.
- Ein weiterer Nachteil ist die immense Menge an Daten, die durch das Protokollieren von Performancezählern während der Tests aufgezeichnet werden müssen.
- Analyse und Korrelation mit den Testdaten können aufwendig und komplex werden.
- Weiterhin steht die Genauigkeit und Aussagekraft spezieller Performancezähler in Frage, da diese Messdaten nicht auf das Gesamtsystem abgeschätzt werden können.
4.1.2.4 Fazit
Die reine Methode der White-Box-Tests zur Bottleneck-Analyse mit Hilfe von Performancezählern ist eine erste gute Möglichkeit, das Gesamtsystem auf Schwachstellen zu testen. Allerdings ist nicht garantiert, dass alle Engpässe aufgezeigt werden können. Zur Verarbeitung der gesammelten Daten sind Last- und Performancetools empfehlenswert, welche die eigentlichen Testdaten bereits mit den Daten der Performancezähler korrelieren können.
Performancetest Bottleneck Testtool Mercury Virtuelle User Testverfahren Black box test White box test Grey box test testnutzer Virtuelle User Lasttest




