Gemeinsam genutzten OpenJ9-Klassencache für Anwendungen in Containern implementieren
Mit Eclipse OpenJ9 Shared Class Cache (SCC) kann die VM Java™ -Klassen, JIT-kompilierten Code und Profilermittlungsdaten in einer optimierten Form speichern, die schnell geladen werden können. Mehrere VMs können die SCC gemeinsam nutzen, was die Gesamtspeicherbelegung reduziert.
WebSphere® Liberty-Container-Images enthalten eine SCC und fügen (standardmäßig) die spezifischen Daten Ihrer Anwendung zur Buildzeit des Image zur SCC hinzu, wenn Ihre Docker-Datei den Befehl RUN configure.sh ausführt.
Einige Inhalte in der SCC sind empfindlich gegenüber der Heap-Geometrie. Wenn Sie die Heap-Geometrie ändern, nachdem die SCC erstellt wurde, können Server-Neustarts zu Schwankungen in der Startleistung führen und solche Inhalte werden nicht verwendet. Wenn Sie einen kleineren -Xmx-Wert angeben, erhöht sich die Wahrscheinlichkeit, eine Heap-Geometrie zu erhalten, die mit dem AOT-Code kompatibel ist.
Verwenden Sie die folgende Variable, um dieses Feature zu steuern:
OPENJ9_SCC(Umgebungsvariable)- Bei
truewerden anwendungsspezifische Daten in einer SCC zwischengespeichert und in das Image eingeschlossen. Bei Bedarf wird eine neue SCC erstellt. Andernfalls werden Daten zur vorhandenen SCC hinzugefügt. Der Standardwert isttrue. TRIM_SCC(Umgebungsvariable)- Wenn
truegewählt wird, wird die anwendungsspezifische SCC-Schicht verkleinert, um nur die Daten aufzunehmen, die während der Bilderstellung eingegeben werden. Damit die Anwendung der SCC zur Laufzeit weitere Daten hinzufügen kann, setzen Sie die UmgebungsvariableTRIM_SCCauffalseund stellen Sie sicher, dass die SCC in der UmgebungsvariableOPENJ9_JAVA_OPTIONSnicht als schreibgeschützt markiert ist. Im folgenden Beispiel wird die UmgebungsvariableOPENJ9_JAVA_OPTIONSin der Dockerdatei der Anwendung festgelegt.
Die UmgebungsvariableOPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,nonFatal -Dosgi.checkConfiguration=false"OPENJ9_JAVA_OPTIONSist im Dockerfile des Basisimages Liberty definiert, enthält aber die Unteroptionreadonly. Der Standardwert isttrue. SCC_SIZE(Umgebungsvariable)- Die Größe der anwendungsspezifischen SCC-Ebene im Bild. Der Wert der Umgebungsvariablen
SCC_SIZEwird nur verwendet, wenn die UmgebungsvariableTRIM_SCCauffalsegesetzt ist. Der Standardwert ist80m. WARM_ENDPOINT(Umgebungsvariable)- Bei
truewird curl verwendet, um während der Population der SCC auf die UmgebungsvariableWARM_ENDPOINT_URLzuzugreifen. Die Menge an Informationen im SCC nimmt zu, und die Zeit für die erste Anfrage bei nachfolgenden Starts des Bildes verbessert sich. Der Standardwert isttrue. WARM_ENDPOINT_URL(Umgebungsvariable)- Die URL, auf die während der SCC-Population zugegriffen wird, wenn die Umgebungsvariable
WARM_ENDPOINTauftruegesetzt ist. Der Standardwert istlocalhost:9080/. WARM_OPENAPI_ENDPOINT(Umgebungsvariable)- Bei
truewird curl verwendet, um während der Population der SCC auf die UmgebungsvariableWARM_OPENAPI_ENDPOINT_URLzuzugreifen. Die Menge an Informationen im SCC nimmt zu, und die Zeit für die erste Anfrage bei nachfolgenden Starts des Bildes verbessert sich. Der Standardwert isttrue. WARM_OPENAPI_ENDPOINT_URL(Umgebungsvariable)- Die URL, auf die während der SCC-Population zugegriffen wird, wenn die Umgebungsvariable
WARM_OPENAPI_ENDPOINTtruelautet. Der Standardwert istlocalhost:9080/openapi.