Fehlerbehebung bei Leistungsproblemen

Dieser Artikel veranschaulicht, dass die Behebung eines Leistungsproblems ein iterativer Prozess ist, und zeigt, wie Sie derartige Probleme beheben.

[AIX Solaris HP-UX Linux Windows]

Vorbereitende Schritte

Vor der Lektüre dieses Artikels sollten Sie sich die Hot List der Optimierungsparameter ansehen.

Informationen zu diesem Vorgang

Die Behebung eines Leistungsproblems ist häufig ein iterativer Prozess, der die folgenden Schritte umfasst:

Dieser Prozess ist häufig iterativ, weil nach der Beseitigung eines Engpasses die Leistung durch einen anderen Teil des Systems beeinträchtigt wird. Der Austausch langsamer Festplatten durch schnellere verlagert das Problem unter Umständen nur auf die CPU des Systems.

Systemleistung messen und Durchsatzdaten erfassen

  • Wählen Sie zunächst eine Benchmark aus, eine Standardgruppe auszuführender Operationen. Diese Benchmark testet die Anwendungsfunktionen, in denen die Leistungsprobleme auftreten. Komplexe Systeme benötigten häufig eine gewisse Anlaufzeit, bis Objekte zwischengespeichert, Codepfade optimiert werden usw. Die Systemleistung während dieser Anlaufzeit ist in der Regel wesentlich geringer als nach der Anlaufzeit. Die Benchmark muss Arbeitsvorgänge generieren können, damit sich das System "warmlaufen" kann, bevor die Messwerte aufgezeichnet werden, die für die Leistungsanalyse verwendet werden. Je nach Komplexität des Systems kann die Anlaufzeit zwischen ein paar Tausend Transaktionen und mehr als 30 Minuten betragen.
  • Sollte das zu untersuchende Leistungsproblem nur auftreten, wenn sehr viele Clients das System verwenden, muss die Benchmark auch mehrere Benutzer simulieren. Eine weitere wichtige Voraussetzung ist die, dass die Benchmark in der Lage sein muss, reproduzierbare Ergebnisse zu erzeugen. Wenn die Ergebnisse der einzelnen Durchläufe mehr als ein paar Prozent variieren, besteht die Möglichkeit, dass der Anfangsstatus des Systems bei den einzelnen Durchläufen nicht identisch war, die Messungen während der Anlaufzeit vorgenommen wurden oder das System zusätzliche Arbeitslasten bewältigen muss.
  • Die Entwicklung von Benchmarks wird durch verschiedene Tools vereinfacht. Die zur Verfügung stehenden Tools sind in ihrem Leistungsspektrum sehr unterschiedlich. So sind beispielsweise Tools verfügbar, die lediglich den URL eines scriptbasierten Produkts aufrufen, das mit den von der Anwendung generierten Daten interagieren kann. IBM Rational stellt Tools bereit, die komplexe Interaktionen mit dem zu testenden System generieren und Tausende von Benutzern simulieren können. Die Entwicklung einer hilfreichen Benchmark ist aufwendig und ist Teil des Entwicklungsprozesses. Warten Sie nicht, bis eine Anwendung in die Produktionsumgebung übernommen wird, bevor Sie mit der Leistungsmessung beginnen.
  • Die Benchmark zeichnet die Durchsatz- und Antwortzeitergebnisse in einer Form auf, die die Erstellung von Diagrammen und andere Analyseverfahren unterstützt. Die von WebSphere Application Server Performance Monitoring Infrastructure (PMI) gelieferten Leistungsdaten unterstützen Sie bei der Überwachung und Optimierung des Anwendungsserverdurchsatzes. Weitere Informationen zu den Leistungsdaten, die von WebSphere Application Server bereitgestellt werden, finden Sie in der Dokumentation zum Einsatz von Request Metrics. Mit Request Metrics kann die Dauer einer Anforderung an den Komponentengrenzen in WebSphere Application Server gemessen werden. Damit haben Sie die Möglichkeit festzustellen, wie viel Zeit in jeder der Hauptkomponenten verbracht wird.

Engpass ermitteln

Sehen Sie sich die folgenden Szenarien an und lesen die zugehörigen Empfehlungen:

  • Szenario: Eine verringerte Leistung ist nur bei einem Benutzer zu beobachten.

    Empfehlung: Bestimmen Sie mit Request Metrics, welchen Anteil jede Komponente an der Gesamtantwortzeit hat. Weitere Informationen zu Request Metrics finden Sie im Artikel zur Erfassung von Daten mit Request Metrics. Konzentrieren Sie sich in der Hauptsache auf die Abrechnungsdaten für die Komponenten. Überprüfen Sie mit Tivoli Performance Viewer die Ressourcenauslastung, einschließlich der Häufigkeit von Garbage-Collections. Sie benötigen unter Umständen Tools für die Erstellung von Codeprofilen, um das Problem auf eine bestimmte Methode einzugrenzen.

  • Szenario: Eine verringerte Leistung tritt bei mehreren Benutzern auf.

    Empfehlung: Stellen Sie fest, ob die Systeme eine hohe CPU-, Netz- oder Plattenauslastung aufweisen, und gehen Sie das Problem von dieser Seite an. In Clusterkonfigurationen sollten Sie prüfen, ob die Arbeitslast ungleichmäßig auf die Cluster-Member verteilt wird.

  • Szenario: Obwohl die Systeme keinerlei CPU-, Speicher-, Netz- oder Platteneinschränkungen aufweisen, treten bei mehreren Benutzern Leistungsprobleme auf.
    Empfehlung:
    • Prüfen Sie, ob die Arbeitsvorgänge das getestete System erreichen. Vergewissern Sie sich, dass keine externe Einheit die Arbeitsvorgänge für das System beschränkt. Mit Tivoli Performance Viewer können Sie die Anzahl der Anforderungen im System bestimmen.
    • Durch einen Threadspeicherauszug können Sie Engpässe bei einer synchronisierten Methode oder einer großen Anzahl von Threads erkennen, die auf eine Ressource warten.
    • Stellen Sie sicher, dass genügend Threads verfügbar sind, um die Arbeitsvorgänge in IBM HTTP Server, in der Datenbank und in Anwendungsservern verarbeiten zu können. Auf der anderen Seite können zu viele Threads zu einem erhöhten Aufkommen von Konkurrenzsituationen führen und den Durchsatz verringern.
    • Überwachen Sie die Garbage-Collections mit Tivoli Performance Viewer oder der Option "verbosegc" der JVM. Wenn übermäßig viele Garbage-Collections durchgeführt werden, kann auch dies den Durchsatz verringern.

Engpass beseitigen

Für die Beseitigung eines Engpasses stehen die folgenden Methoden zur Verfügung:
  • Bedarf verringern
  • Ressourcenpool vergrößern
  • Lastverteilung verbessern
  • Synchronisationsoperationen verringern
Der Ressourcenbedarf kann auf verschiedene Arten reduziert werden. Durch Caching kann die Nutzung der Systemressourcen erheblich verringert werden. Da zuvor zwischengespeicherte Antworten zurückgegeben werden, entfällt der erneute Aufwand für das Erstellen der Originalantwort. Caching wird an verschiedenen Stellen in den folgenden Systemen unterstützt:
  • IBM® HTTP Server
  • Befehl
  • Enterprise-Bean
  • Betriebssystem

Durch die Erstellung von Anwendungscodeprofilen kann der CPU-Bedarf verringert werden, indem die Brennpunkte herausgestellt werden, die Sie optimieren können. IBM Rational und andere Unternehmen stellen Tools für die Erstellung von Codeprofilen bereit. Eine Analyse der Anwendung kann Bereiche ermitteln, indem die Arbeit für einige Typen von Transaktionen reduziert werden kann.

Sie können Optimierungsparameter ändern, um zusätzliche Ressourcen bereitzustellen, wie z. B. die Anzahl der Dateikennungen. Andere Ressourcen können eine Hardwareänderung erfordern, wie z. B. zusätzliche oder schnellere CPUs oder weitere Anwendungsserver. Die wichtigsten Optimierungsparameter für die wichtigen Komponenten von WebSphere Application Server sind beschrieben, um Ihnen die Behebung von Leistungsproblemen zu erleichtern. Außerdem können die Leistungsadvisor Empfehlungen zur Optimierung eines Produktionssystems unter echter oder simulierter Arbeitslast liefern.

Die Lastverteilung kann sich auf die Leistung auswirken, wenn einige Ressourcen zu wenig und andere zu viel belastet sind. Die Workload-Management-Funktionen von WebSphere Application Server unterstützen verschiedene Methoden für die Verteilung der Arbeitslast. Die Lastverteilung gilt gleichermaßen für Konfigurationen mit einem Server und Konfigurationen mit mehreren Servern und Knoten.

[AIX Solaris HP-UX Linux Windows][IBM i]Weitere Informationen finden Sie im Artikel Workload-Management.

[z/OS]Weitere Informationen finden Sie im Artikel Workload-Management.

Einige kritische Abschnitte des Anwendungs- und Servercodes müssen synchronisiert werden, um zu verhindern, dass mehrere Threads den Code gleichzeitig ausführen und dies zu ungültigen Ergebnissen führt. Die Synchronisation gewährleistet die Korrektheit der Ergebnisse, kann aber den Durchsatz verringern, wenn mehrere Threads warten müssen, bis ein Thread den kritischen Abschnitt verlässt. Wenn mehrere Threads auf den Aufruf eines kritischen Abschnitts warten, können diese Threads durch einen Threadspeicherauszug ermittelt werden. Die Anzahl der Synchronisationsdurchläufe kann häufig verringert werden, indem der Code so geändert wird, dass die Synchronisation nur bei Bedarf durchgeführt wird, indem die Pfadlänge des synchronisierten Codes oder die Anzahl der Aufrufe des synchronisierten Codes reduziert wird.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprf_troubleshoot
Dateiname:tprf_troubleshoot.html