Systemanforderungen für die Java-Überwachung
Instana unterstützt alle Java-Laufzeiten von Version 7 bis 25. Verwenden Sie die neuesten Versionen der virtuellen Java-Maschine (JVM) für fehlerfreie Laufzeiten. Weitere Voraussetzungen für die Überwachung der JVM finden Sie in den folgenden Abschnitten.
Unterstützte JVM-Distributionen
Instana unterstützt die folgenden JVM-Distributionen:
- Amazon Corretto
- Azul Zulu
- J9IBM (Weitere Informationen finden Sie unter IBMJ9 und OpenJ9 Überlegungen und IBMJ9 und OpenJ9 Einschränkungen )
- OpenJ9Eclipse (Weitere Informationen finden Sie unter IBMJ9 und OpenJ9 Überlegungen )
- OpenJDK
- AdoptOpenJDK
- Oracle HotSpot
- SAP JVM
- Sun HotSpot
- BEA JRockit
- Hitachi JVM
J9IBM und OpenJ9 Überlegungen
Der Instana-Agent verbindet sich über die Attach-API mit IBMJ9 und EclipseOpenJ9 Java Virtual Machines. Der Standardpfad für das Anhängen von API-bezogenen Dateien kann auf J9 Workloads mithilfe der -Dcom.ibm.tools.attach.directory=<directory_name> Java-Systemeigenschaft geändert werden. Der Instana-Agent unterstützt dieses verschobene Anhangsverzeichnis für die Java-Überwachung und Java AutoTrace.
J9IBM und OpenJ9 Einschränkungen
Instana unterstützt IBM J9 mit den folgenden Einschränkungen:
JVMs vor OpenJ9 v0.37.0, IBM SDK 8.0.8.5, oder IBM Semeru 8.0.372.0 werden nicht unterstützt.
Wenn
-javaagentnicht als Befehlszeilenargument angegeben ist, unterstützen bestimmte Versionen von IBM J9 möglicherweise nicht alle erforderlichen Funktionen. Starten Sie daher die JVM mit dem Java-Agenten, indem Sie den folgenden Befehl ausführen:java -javaagent:instana-javaagent-1.0.0.jar -jar app.jar serverSie können die JAR-Datei von Artifact public herunterladen. Um sich auf der Seite anzumelden, verwenden Sie die folgenden Anmeldedaten:
- Benutzername:
_ - Kennwort:
<your-download-key>.
Wenn Sie Java 8 - Service Refresh 3 Fixpack 22 (Dezember 2016) verwenden, verwenden Sie die Option
-XX:+EnableHCR, um den gleichen Vorgang durchzuführen. Durch die Verwendung dieser temporären Option können spät hinzugefügte Bearbeiter Klassen neu definieren oder umwandeln. Wenn die folgende Protokollzeile in den Agentenprotokollen vorhanden ist, übergeben Sie außerdem die Option-XX:+EnableHCRals Startparameter.WARN | instana-http-client-thread-16-2 | LoggerEndpoint | com.instana.agent - 1.1.680 | JVM (1234) - JVM does not support retransformation, tracing is currently unsupportedDie Option
-XX:+EnableHCRkann jedoch zu Leistungseinbußen führen und wird möglicherweise in einer künftigen Aktualisierung entfernt, wenn sie nicht mehr benötigt wird.- Benutzername:
Zusätzliche Befehlszeilenschalter können erforderlich sein, um die Ablaufverfolgung und Metriksammlung von IBM zu aktivieren J9:
Verwenden Sie
-Dcom.ibm.tools.attach.enable=yesals Standardeinstellung.Für IBM J9 SDK 6 oder IBM J9 SDK 7, führen Sie die folgenden Schritte aus:
- Deaktivieren Sie die Klassenteilung mit der Einstellung
-Xshareclasses:none. - Aktivieren Sie eine Implementierung der gemeinsamen Nutzung von Klassen, die Bytecode-Instrumentierung (BCI) unterstützt, indem Sie die Einstellung
-Xshareclasses:enableBCIverwenden.
Anmerkung: Hinweise: IBM J9 Die SDK-Konfigurationsvorgaben weisen die folgenden Unterschiede auf: Version 6 (JRE 1.6.0 ) und Version 7 (JRE 1.7.0 ) verwenden standardmäßig eine Implementierung der gemeinsamen Nutzung von Klassen, die BCI nicht unterstützt. Daher muss die gemeinsame Nutzung von Klassen deaktiviert oder die BCI-Unterstützung aktiviert werden. In Version 8 (JRE 1.8.0 ) wird standardmäßig eine Implementierung der Klassenteilung verwendet, die BCI unterstützt.- Deaktivieren Sie die Klassenteilung mit der Einstellung
Überlegungen für Java Runtimes 8 oder frühere Versionen
Wenn Sie Java Runtimes 8 oder frühere Versionen verwenden, stellen Sie sicher, dass Sie die folgenden Aktionen durchführen:
Stellen Sie unter Amazon Corretto, Azul Zulu, OpenJDK, Oracle HotSpot oder SAP JVM die Datei
tools.jarin der Laufzeit jeder überwachten JVM zur Verfügung. Die Datei ist unter$JAVA_HOME/lib/tools.jarzu finden.Wenn Sie Java 8 verwenden, aktualisieren Sie auf Java 8 1.8.0_181 oder höhere Versionen. Die Java 8-Builds bis zu 1.8.0_40 haben viele bekannte Probleme, die mit der Implementierung der Lambda-Funktion zusammenhängen. Für Java 8 unterstützt der Instana-Agent also nicht 1.8.0_40 oder frühere Versionen. Daher müssen Sie auf neuere Versionen aktualisieren, da einige Abstürze in diesen Versionen behoben sind.
Überlegungen für Java Runtimes 9 oder spätere Versionen
Java 9 führt modularisierte Builds auf der Grundlage des Jigsaw-Frameworks ein. Wenn Sie Java Runtimes 9 oder eine spätere Version verwenden, führen Sie die folgenden Aktionen durch:
Wenn Sie ein benutzerdefiniertes Laufzeit-Image verwenden, wie z. B. die mit
jmododerjlinkerstellt wurde, stellen Sie sicher, dass Sie die folgenden Module in die instrumentierte JVM aufnehmen:java.instrumentjdk.attach
Um zu prüfen, ob Ihr Java 9 oder höher die erforderlichen Module
java.instrumentundjdk.attachenthält, führen Sie den folgenden Befehl aus:java --list-modulesWenn Sie den Befehl auf einer JVM 8 oder früher ausführen, wird die Fehlermeldung
Unrecognized option: --list-modulesangezeigt.Wenn Apache Tomcat unter Windows als Dienst ausgeführt wird, laufen die überwachten Prozesse nicht als Datei
C:\java12\bin\java.exe, sondern als DateiC:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\Tomcat8.exe.Instana unterstützt diese Einrichtung. Bevor Sie jedoch den Dienst starten, muss sich das Verzeichnis
binauf der JVM, auf der der Dienst läuft, aufPATHbefinden. Um den Pfad festzulegen, führen Sie den folgenden Befehl aus:set PATH=%PATH%;C:\java12\binDer Pfad muss angegeben werden, da die Serverdatei
jvm.dlldie DateiC:\java12\bin\instrument.dllladen muss. Wenn die Datei nicht im Pfad angegeben ist, kann der Server sie nicht finden, und es wird folgende Fehlermeldung angezeigt:com.sun.tools.attach.AgentLoadException: Failed to load agent library: instrument was not loaded.Can't find dependent libraries
Überlegungen zur Java-Laufzeit 21
Wenn Sie Java Runtime 21 verwenden, können die folgenden Warnmeldungen auftreten:
WARNING: A Java agent has been loaded dynamically (/tmp/.instana/javaagent-loader-1.3.56.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release
Um dieses Problem zu vermeiden, fügen Sie den folgenden Befehl in die Argumente der virtuellen Maschine ein, bevor Sie Ihre Anwendung starten:
-XX:+EnableDynamicAgentLoading
$TMP anforderungen an die Verzeichnisberechtigung
Der Instana-Host-Agent erstellt temporäre JAR-Dateien im Verzeichnis $TMP/.instana . Diese JAR-Dateien sind für die JVM-Überwachung erforderlich. Für eine erfolgreiche JVM-Überwachung muss sichergestellt werden, dass der Root-Benutzer, unter dem der Agent läuft, und der Benutzer, unter dem die JVM läuft, über die erforderlichen Lese- und Schreibrechte für das Verzeichnis $TMP verfügen. Bereinigen Sie auch nicht die Instana-Dateien in den Verzeichnissen $TMP und $TMP/.instana .
Begrenzung der Teilungsrate
Wenn Sie Protokolle wie Suppressed spans due to high number of short oder Discarded span due to queue overflow im Agentenprotokoll sehen, bedeutet dies, dass der Java Tracer eine hohe Belastung bei der Span-Verarbeitung erfahren hat. Infolgedessen lässt der Java Tracer ein paar Spans aus, um Leistungsprobleme in der Anwendung zu vermeiden.
Um die Belastung zu verringern, führt der Java Tracer folgende Schritte durch:
- Es unterdrückt die Ausgänge, die eine kurze Dauer haben.
- Wenn die Belastung noch hoch ist, werden die Spannen in Stapeln zusammengefasst.
- Wenn die Dosierung nicht erfolgreich ist, werden ein paar Abschnitte gestrichen.