Sie können WebSphere Real Time mit WebSphere eXtreme Scale verwenden. Durch die Aktivierung von WebSphere Real Time erreichen Sie eine vorhersehbarere Garbage-Collection mit stabilen, konsistenten Antwortzeiten und Transaktionsdurchsätzen in einer eigenständigen eXteme-Scale-Umgebung.
Installieren Sie WebSphere Real Time und die eigenständige Konfiguration von WebSphere eXtreme Scale auf den Computern, auf denen Sie eXtreme Scale ausführen möchten. Setzen Sie die Umgebungsvariable JAVA_HOME so, dass sie auf eine Standard-JRE (Java SE Runtime Environment) zeigt.
Setzen Sie die Umgebungsvariable JAVA_HOME so, dass sie auf das installierte Produkt WebSphere Real Time zeigt. Aktivieren Sie WebSphere Real Time anschließend wie folgt.
WXS_REAL_TIME_JAVA="-Xrealtime -Xgcpolicy:metronome -Xgc:targetUtilization=80"
Jetzt haben Sie WebSphere Real Time aktiviert. Wenn Sie WebSphere Real Time inaktivieren möchten, können Sie der Zeile das Kommentarzeichen wieder hinzufügen.
Wenn Sie WebSphere Real Time einsetzen, sind die Antwortzeiten von eXtreme-Scale-Transaktionen vorhersehbarer. Die Ergebnisse zeigen, dass sich die Abweichung der Antwortzeit einer eXtreme-Scale-Transaktion mit WebSphere Real Time im Vergleich zum Standard-Java mit dem Standard-Garbage-Collector erheblich verbessert. Die Aktivierung von WebSphere Real Time mit eXtreme Scale ist optimal, wenn Stabilität und Antwortzeiten Ihrer Anwendung von entscheidender Bedeutung sind.
Die in diesem Abschnitt beschriebenen bewährten Verfahren verdeutlichen, wie WebSphere eXtreme Scale durch Optimierung und Codeverfahren für die erwartete Last effizienter gemacht werden kann.
WebSphere Real Time bietet die Möglichkeit, die Prozessorbelegung zu steuern, so dass die Auswirkungen der Garbage-Collection auf Ihre Anwendung kontrolliert und minimiert werden. Verwenden Sie den Parameter -Xgc:targetUtilization=NN, um NN Prozent der Prozessorkapazität festzulegen, die alle 20 Sekunden von Ihrer Anwendung belegt werden. Der Standardwert für WebSphere eXtreme Scale ist 80 %, aber Sie können das Script in der Datei objectgridRoot/bin/setupCmdLine.sh ändern und eine andere Zahl festlegen, wie z. B. 70, womit Sie dem Garbage-Collector mehr Prozessorkapazität zuweisen. Implementieren Sie genügend Server, um die Prozessorbelegung für Ihre Anwendungen unter 80 % zu halten.
WebSphere Real Time belegt mehr Hauptspeicher als reguläres Java. Planen Sie WebSphere eXtreme Scale deshalb mit einem größeren Heapspeicher, und legen Sie die Heapspeichergröße beim Start der Katalogserver und Container mit dem Parameter –jvmArgs –XmxNNNM im Befehl ogStartServer fest. Sie können den Parameter –jvmArgs –Xmx500M beispielsweise verwenden, um Katalogserver zu starten und eine entsprechende Hauptspeichergröße zum Starten der Container zu verwenden. Sie können die Hauptspeichergröße auf 60-70 % der erwarteten Datenmenge pro JVM setzen. Wenn Sie diesen Wert nicht festlegen, kann ein Fehler des Typs "OutOfMemoryError" auftreten. Optional können Sie auch den Parameter –jvmArgs –Xgc:noSynchronousGCOnOOM verwenden, um ein nicht deterministisches Verhalten zu verhindern, wenn in der JVM eine abnormale Speicherbedingung auftritt.
WebSphere eXtreme Scale erstellt eine Vielzahl temporärer Objekte für jede Transaktion und jeden RPC-Thread (Remote Procedure Call). Die Garbage-Collection bietet eine bessere Leistung, wenn Ihr Computer genügtend Prozessorzyklen besitzt. Die Standardanzahl der Threads ist 1. Sie können die Anzahl der Threads mit dem Argument –Xgcthreads n anpassen. Der vorgeschlagene Wert für dieses Argument ist die Anzahl der verfügbaren Kerne unter Berücksichtigung der Anzahl der Java Virtual Machines pro Computer.
WebSphere Real Time ist für Anwendungen mit langer Laufzeit optimiert. Gewöhnlich müssen Transaktionen von WebSphere eXtreme Scale kontinuierlich über einen Zeitraum von two Stunden hinweg ausgeführt werden, um zuverlässige Leistungsdaten zu erhalten. Sie können den Parameter –Xquickstart verwenden, um die Leistung Ihrer Anwendungen mit kurzer Laufzeit zu verbessern. Dieser Parameter weist den JIT-Compiler an, die untere Stufe der Optimierung zu verwenden.
Der Hauptvorteil der Verwendung von WebSphere eXtreme Scale mit WebSphere Real Time ist eine hoch zuverlässige Transaktionsantwortzeit, die gewöhnlich erhebliche Verbesserungen bei der Abweichung der Transaktionsantwortzeiten zur Folge hat. Alle in die Warteschlange eingereihten Clientanforderungen und Clientanforderungsvermittlungen über andere Software wirken sich auf die Antwortzeit aus, die außerhalb der Kontrolle von WebSphere Real Time und WebSphere eXtreme Scale liegt. Sie müssen Ihre Thread- und Socket-Parameter ändern, um eine stabile und gleichmäßige Last ohne größere Verzögerungen zu erzielen und die Länge der Warteschlangen zu verringern.
Sie können ohne Änderung Ihrer Anwendung hoch zuverlässige Transaktionsantwortzeiten in WebSphere eXtreme Scale mit erheblichen Verbesserungen bei der Antwortzeitabweichung erreichen. Außerdem können Sie Threading für Ihre transaktionsorientierten Anwendungen (von regulären Java-Threads zu Realtime-Threads) nutzen, das Ihnen eine bessere Steuerung der Thread-Prioritäten und der Planung bietet.
Ihre Anwendung enthält derzeit den folgenden Code:
public class WXSCacheAppImpl extends Thread implements WXSCacheAppIF
Optional können Sie diesen Code durch Folgenden ersetzen.
public class WXSCacheAppImpl extends RealtimeThread implements WXSCacheAppIF