Liberty optimieren
Sie können Parameter und Attribute von Liberty optimieren.
Informationen zu diesem Vorgang
Vorgehensweise
- JVM optimieren Die Optimierung der JVM ist der wichtigste Optimierungsschritt bei der Konfiguration einer Entwicklungs- oder einer Produktionsumgebung. Wenn Sie die JVM für Liberty optimieren, verwenden Sie die Datei jvm.options im Verzeichnis ${server.config.dir}. Sie können alle JVM-Argumente, die Sie verwenden möchten, nacheinander mit jeweils einem Argument pro Zeile angeben. Weitere Informationen finden Sie unter Liberty-Umgebung anpassen. Nachfolgend sehen Sie ein Beispiel für die Datei jvm.options:
-Xms50m -Xmx256m
In einer Entwicklungsumgebung, in der schnellere Serverstartzeiten erwünscht sind, können Sie die Mindestgröße des Heapspeichers auf einen kleineren Wert und die maximale Größe des Heapspeichers auf den für Ihre Anwendung erforderlichen Wert setzen. In einer Produktionsumgebung kann durch Festlegen desselben Werts für die Mindestgröße und die maximale Größe des Heapspeichers die beste Leistung erzielt werden, da in diesem Fall Heapspeichererweiterungen und -verkleinerungen vermieden werden.
- Transportkanalservices optimieren Transportkanalservices verwalten Clientverbindungen, Ein-/Ausgabeverarbeitung für HTTP, Thread-Pools und Verbindungspools. Für Anwendungen in Liberty sind die folgenden Attribute für verschiedene Elemente verfügbar, die zur Verbesserung der Laufzeitleistung und/oder Skalierbarkeit verwendet werden können.
- maxKeepAliveRequests von httpOptions
- Diese Option gibt die maximale Anzahl persistenter Anforderungen an, die
in einer einzelnen HTTP-Verbindung zulässig sind, wenn persistente Verbindungen
aktiviert sind. Der Wert -1 steht für eine unbegrenzte Anzahl. Diese
Option unterstützt Anwendungen mit geringer Latenzzeit oder hohem Durchsatz und die Verwendung von SSL-Verbindungen in Situationen, wenn der Aufbau einer neuen Verbindung aufwendig ist. Sehen Sie sich das Beispiel für die Codierung dieser Option in der Datei server.xml an:
<httpOptions maxKeepAliveRequests="-1" />
- maxPoolSize von connectionManager
- Diese Option gibt die maximale Anzahl physischer Verbindungen für den
Verbindungspool an. Der Standardwert ist 50.
Die optimale Einstellung richtet sich nach den Anwendungsmerkmalen.
Für eine Anwendung, in der jeder Thread eine Verbindung zur Datenbank anfordert,
könnten Sie mit einer 1:1-Zuordnung zum Attribut coreThreads beginnen. Sehen Sie sich das Beispiel für die Codierung dieser Option in der Datei server.xml an:
<connectionManager ... maxPoolSize="40" />
- purgePolicy von connectionManager
- Diese Option gibt an, welche Verbindungen gelöscht werden sollen, wenn eine veraltete Verbindung im Pool
gefunden wird. Der Standardwert umfasst den gesamten
Pool. Es kann sich als besser erweisen, nur die fehlschlagende Verbindung zu löschen. Sehen Sie sich das Beispiel für die Codierung dieser Option in der Datei server.xml an:
<connectionManager ... purgePolicy="FailingConnectionOnly" />
- numConnectionsPerThreadLocal von connectionManager
- Diese Option gibt die Anzahl von Datenbankverbindungen an, die für jeden Thread des Steuerprogramms zwischengespeichert werden sollen. Mit dieser Einstellung kann eine wesentliche Verbesserung auf großen Multi-Core-Maschinen (8+) erzielt werden, indem die angegebene Anzahl der Datenbankverbindungen für jeden Thread reserviert wird.
- Durch die Verwendung eines lokalen Speichers für Threads für Verbindungen kann die Leistung von Anwendungen auf
Multithread-Systemen verbessert werden. Wenn der Wert für numConnectionsPerThreadLocal auf 1 oder höher gesetzt wird,
werden diese Verbindungen pro Thread im lokalen Speicher für Threads gespeichert.
Bei der Verwendung von numConnectionsPerThreadLocal sollten Sie zwei andere Werte
berücksichtigen:
- Anzahl der Anwendungsthreads
- Maximale Anzahl der Verbindungen im Verbindungspool
<connectionManager ... numConnectionsPerThreadLocal="1" />
- statementCacheSize von dataSource
- Diese Option gibt die maximale Anzahl zwischengespeicherter ausführbarer Anweisungen
pro Verbindung an. Zum Festlegen dieser Option müssen folgende Voraussetzungen erfüllt sein:
- Überprüfen Sie den Anwendungscode (oder einen aus der Datenbank oder dem Datenbanktreiber zusammengestellten SQL-Trace) für alle eindeutigen ausführbaren Anweisungen.
- Stellen Sie sicher, dass die Cachegröße größer als die Anzahl der Anweisungen ist.
<dataSource ... statementCacheSize="60" >
- isolationLevel von dataSource
- Die Isolationsstufe der Datenquelle gibt den Grad der Datenintegrität und
des gemeinsamen Zugriffs auf die Daten an, der wiederum die Stufe der Datenbanksperrung steuert.
Es sind vier verschiedene Optionen verfügbar, die von bester Leistung
(geringste Integrität) bis schlechteste Leistung (höchste Integrität) sortiert sind.
- TRANSACTION_READ_UNCOMMITTED
- Fehlerhafte Leseoperationen, nicht wiederholbare Leseoperationen und Scheinleseoperationen können auftreten.
- TRANSACTION_READ_COMMITTED
- Fehlerhafte Leseoperationen werden verhindert. Es können nicht wiederholbare und Scheinleseoperationen auftreten.
- TRANSACTION_REPEATABLE_READ
- Fehlerhafte Leseoperationen und nicht wiederholbare Leseoperationen werden verhindert. Es können Scheinleseoperationen auftreten.
- TRANSACTION_SERIALIZABLE
- Fehlerhafte Leseoperationen, nicht wiederholbare Leseoperationen und Scheinleseoperationen werden verhindert.
<dataSource ... isolationLevel="TRANSACTION_READ_COMMITTED">
- Optimieren Sie das Standardsteuerprogramm.
Das Liberty-Standardsteuerprogramm ist selbstoptimierend und passt sich durch Hinzufügen und Entfernen von Threads dynamisch an die aktuelle Workload an. Bei den meisten Workloads ist keine Optimierung des Steuerprogramms erforderlich und es wird empfohlen, die Einstellungen des Steuerprogramms nur zu ändern, wenn spezielle Probleme bei der Threaderstellung auftreten.
Bei Bedarf können Sie die Parameter coreThreads und maxThreads des Elements executor in der Datei server.xml konfigurieren, um Unter- und Obergrenzen für den Liberty-Code für automatische Implementierung festzulegen. Die Einstellung coreThreads ist gewöhnlich nicht erforderlich, weil das Steuerprogramm einen aggressivem Code für die Verhinderung von Deadlock-Szenarien enthält, der Threads hinzufügt, um das Steuerprogramm aus Deadlock-Szenarien zu lösen. In seltenen Fällen fügt der Code für die Verhinderung von Deadlock-Szenarien mehr Threads hinzu als erforderlich. In einer solchen Situation können Sie den Parameter maxThreads des Elements executor verwenden, um die Anzahl der Threads, die das Steuerprogramm erstellen kann, zu beschränken.
- Verringern Sie Reaktionszeit von Servlets.
Um die Reaktionszeit von Servlets zu verringern, müssen Sie das folgende Attribut der Datei server.xml hinzufügen:
<webContainer skipMetaInfResourcesProcessing="true"/>
- Verringern Sie die CPU-Zeit inaktiver Server.
Um die CPU-Zeit inaktiver Server zu verringern, fügen Sie der Datei server.xml das folgende Attribut hinzu:
<applicationMonitor dropinsEnabled="false" updateTrigger="disabled"/> <config updateTrigger="disabled"/>
Wenn die Attribute hinzugefügt werden, verfolgt der Server nicht mehr, ob Konfigurations- oder Anwendungsaktualisierungen stattfinden.
- Optimieren Sie die Startzeit.
- CDI 1.2
- Das Feature CDI 1.2 scannt standardmäßig alle Anwendungsarchive. Das Feature CDI 1.2 kann die Startzeit erheblich erhöhen und die größten Auswirkungen auf größere Anwendungen haben.
SIe können das implizite Annotationsscanning von Archiven inaktivieren, indem Sie enableImplicitBeanArchives auf den Wert false setzen.
Bei dieser Einstellung wird das Scannen von Archiven übersprungen, sofern sie keine Datei
beans.xml enthalten.
<cdi12 enableImplicitBeanArchives="false"/>
Anmerkung: Das Feature cdi-1.2 kann selbst dann enthalten sein, wenn es nicht im Abschnitt <features> der Datei server.xml vorhanden ist, weil andere Features wie webProfile-7.0 und javaee-7.0 das Feature cdi-1.2 enthalten. Suchen Sie in der Datei messages.log nach der Nachricht "Im Server wurden die folgenden Features installiert:", um festzustellen, ob cdi-1.2 installiert wurde.
Untergeordnete Themen
- Liberty für sichere Anwendungen optimieren
Sie können Liberty optimieren, um die Leistung für sichere Anwendungen zu maximieren. - Eingebundene LDAP-Repositorys in Liberty optimieren
Sie können die Leistung der eingebundenen LDAP-Repositorys verbessern, indem Sie die Cache- und Kontextpoolelemente in der Datei server.xml überwachen und anpassen.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_tun
Dateiname: twlp_tun.html