Für LINUX-Plattformen

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 true werden 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 ist true.
TRIM_SCC (Umgebungsvariable)
Wenn true gewä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 Umgebungsvariable TRIM_SCC auf false und stellen Sie sicher, dass die SCC in der Umgebungsvariable OPENJ9_JAVA_OPTIONS nicht als schreibgeschützt markiert ist. Im folgenden Beispiel wird die Umgebungsvariable OPENJ9_JAVA_OPTIONS in der Dockerdatei der Anwendung festgelegt.
OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,nonFatal -Dosgi.checkConfiguration=false"
Die Umgebungsvariable OPENJ9_JAVA_OPTIONS ist im Dockerfile des Basisimages Liberty definiert, enthält aber die Unteroption readonly . Der Standardwert ist true.
SCC_SIZE (Umgebungsvariable)
Die Größe der anwendungsspezifischen SCC-Ebene im Bild. Der Wert der Umgebungsvariablen SCC_SIZE wird nur verwendet, wenn die Umgebungsvariable TRIM_SCC auf false gesetzt ist. Der Standardwert ist 80m.
WARM_ENDPOINT (Umgebungsvariable)
Bei true wird curl verwendet, um während der Population der SCC auf die Umgebungsvariable WARM_ENDPOINT_URL zuzugreifen. 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 ist true.
WARM_ENDPOINT_URL (Umgebungsvariable)
Die URL, auf die während der SCC-Population zugegriffen wird, wenn die Umgebungsvariable WARM_ENDPOINT auf true gesetzt ist. Der Standardwert ist localhost:9080/.
WARM_OPENAPI_ENDPOINT (Umgebungsvariable)
Bei true wird curl verwendet, um während der Population der SCC auf die Umgebungsvariable WARM_OPENAPI_ENDPOINT_URL zuzugreifen. 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 ist true.
WARM_OPENAPI_ENDPOINT_URL (Umgebungsvariable)
Die URL, auf die während der SCC-Population zugegriffen wird, wenn die Umgebungsvariable WARM_OPENAPI_ENDPOINT true lautet. Der Standardwert ist localhost:9080/openapi.