Systemanforderungen für die Überwachung von „ Java “
Instana unterstützt alle „ Java “-Laufzeitumgebungen von Version 7 bis 26. Verwenden Sie die neuesten Versionen der virtuellen Maschine „ Java “ ( JVM ), um fehlerfreie Laufzeiten zu gewährleisten. Weitere Anforderungen zur Überwachung von JVM finden Sie in den folgenden Abschnitten.
Unterstützte Distributionen v JVM
Instana unterstützt die folgenden „ JVM “-Distributionen:
- Amazon Corretto
- Azul Zulu
- IBM J9 (Weitere Informationen finden Sie unter IBM, J9 und OpenJ9 (Hinweise) sowie unter IBM, J9 und OpenJ9 (Einschränkungen))
- Eclipse OpenJ9 (Weitere Informationen finden Sie unter IBM, J9 und OpenJ9 )
- OpenJDK
- AdoptOpenJDK
- Oracle HotSpot
- SAP JVM
- Sun HotSpot
- BEA JRockit
- Hitachi JVM
IBM J9 sowie Überlegungen zu „ OpenJ9 “
Der Instana Agent stellt über die Attach API eine Verbindung zu IBM J9 und Eclipse OpenJ9 Java Virtual Machines her. Der Standardpfad für Dateien im Zusammenhang mit „attach API “ kann bei „ J9 “-Workloads mithilfe der Systemeigenschaft -Dcom.ibm.tools.attach.directory=<directory_name> „ Java “ geändert werden. Instana Der Agent unterstützt dieses verschobene Verzeichnis für die Überwachung von Java sowie für Java und AutoTrace.
IBM J9 und Einschränkungen bei „ OpenJ9 “
Instana unterstützt IBM J9 unter folgenden Einschränkungen:
JVMs, die älter sind als 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 definiert ist, unterstützen bestimmte Versionen von IBM J9 möglicherweise nicht alle erforderlichen Funktionen. Starten Sie daher den „ JVM “ mit dem „ Java “-Agenten, indem Sie den folgenden Befehl ausführen:java -javaagent:instana-javaagent-1.0.0.jar -jar app.jar serverHinweis: Das-javaagentArgument ist für IBM J9 erforderlich, da ältere Versionen von J9 JVM keine Instrumentierung für eine spätere Einbindung zulassen. Unter „spätem Anbinden“ versteht man das Anbinden eines Agenten an einen „ JVM “ nach dem Start der Anwendung. Da diese älteren Versionen von „ J9 “ Klassen nicht auf diese Weise instrumentieren können, muss der „ JVM “ beim Start über-javaagent… einen No-Operation-Agenten (No-Op-Agenten) laden. Dieinstana-javaagent-1.0.0.jarDatei ist ein schlanker, statischer No-Op-Agent, dessen einziger Zweck darin besteht, diesen Anhangsprozess zu ermöglichen.Sie 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 s 8 – Service Pack 3, Update 22 (Dez. 2016)“ verwenden, nutzen Sie die
-XX:+EnableHCROption, um denselben Vorgang auszuführen. Durch Verwendung dieser temporären Option können spät angehängte Agenten Klassen neu definieren oder erneut transformieren. Falls zudem die folgende Protokollzeile in den Agent-Protokollen vorhanden ist, übergeben Sie die-XX:+EnableHCROption als 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 in einer zukünftigen Aktualisierung entfernt werden, wenn sie nicht mehr benötigt wird.- Benutzername:
Möglicherweise sind zusätzliche Befehlszeilenschalter erforderlich, um die Traceerstellung und die Messdatenerfassung von IBM J9:
Verwenden Sie
-Dcom.ibm.tools.attach.enable=yesals Standardeinstellung.Führen Sie für IBM J9 SDK 6 oder IBM J9 SDK 7 die folgenden Schritte aus:
- Inaktivieren Sie die gemeinsame Klassennutzung mithilfe der Einstellung
-Xshareclasses:none. - Aktivieren Sie eine Implementierung der gemeinsamen Klassennutzung, die Bytecode-Instrumentierung (BCI) unterstützt, indem Sie die Einstellung
-Xshareclasses:enableBCIverwenden.
Hinweis: Die Standardkonfiguration des SDK unter IBM J9 weist folgende Unterschiede auf: Version 6 (JRE 1.6.0 ) und Version 7 (JRE 1.7.0 ) verwenden standardmäßig eine Implementierung der Klassenfreigabe, die BCI nicht unterstützt. Daher muss die gemeinsame Nutzung von Klassen inaktiviert oder die BCI-Unterstützung aktiviert werden. Version 8 (JRE 1.8.0 ) verwendet standardmäßig eine Implementierung der Klassenfreigabe, die BCI unterstützt.- Inaktivieren Sie die gemeinsame Klassennutzung mithilfe der Einstellung
Hinweise zu „ Java “ Runtimes 8 oder früheren Versionen
Wenn Sie die „ Java “-Laufzeitumgebung 8 oder frühere Versionen verwenden, stellen Sie bitte sicher, dass Sie die folgenden Schritte ausfü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 befindet sich im Verzeichnis$JAVA_HOME/lib/tools.jar.Wenn Sie „ Java “ 8 verwenden, führen Sie ein Upgrade auf „ Java “ 8 1.8.0_181 oder eine neuere Version durch. Die Builds von „ Java “ 8 bis hin zu „ 1.8.0_40 “ weisen zahlreiche bekannte Probleme auf, die mit der Implementierung der Lambda-Funktion zusammenhängen. Der „ Instana “-Agent unterstützt also für „ Java 8“ weder „ 1.8.0_40 “ noch frühere Versionen. Daher müssen Sie ein Upgrade auf spätere Versionen durchführen, da einige Abstürze in ihnen behoben sind.
Hinweise zu „ Java “ Runtimes 9 oder neueren Versionen
Java Version 9 führt modulare Builds auf Basis des Jigsaw-Frameworks ein. Wenn Sie „ Java “ Runtimes 9 oder eine neuere Version verwenden, führen Sie die folgenden Schritte aus:
Wenn Sie ein benutzerdefiniertes Laufzeit-Image verwenden, wie beispielsweise solche, die mit
jmodjlinkoder erstellt wurden, stellen Sie sicher, dass Sie die folgenden Module in das instrumentierte JVM aufnehmen:java.instrumentjdk.attach
Um zu überprüfen, ob Ihre „ Java “ 9-Laufzeitumgebung oder eine neuere Version die erforderlichen
java.instrumentjdk.attachModule enthält, führen Sie den folgenden Befehl aus:java --list-modulesWenn Sie den Befehl auf einer JVM 8 oder älter ausführen,
Unrecognized option: --list-modulesEs wird eine Fehlermeldung angezeigt.Wenn „ Apache Tomcat “ auf Windows als Dienst ausgeführt wird, laufen die überwachten Prozesse nicht als Benutzer
C:\java12\bin\java.exe„file“, sondern als BenutzerC:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\Tomcat8.exe„file“.Instana unterstützt diese Konfiguration. Bevor Sie den Dienst jedoch starten, muss sich das
binVerzeichnis auf dem JVM, auf dem der Dienst ausgeführt wird, im VerzeichnisPATH. befinden. Um den Pfad festzulegen, führen Sie den folgenden Befehl aus:set PATH=%PATH%;C:\java12\binDer Pfad muss festgelegt werden, da die Serverdatei
jvm.dlldie DateiC:\java12\bin\instrument.dllladen muss. Ist die Datei nicht im Pfad angegeben, kann der Server sie nicht finden, und der folgende Fehler wird angezeigt:com.sun.tools.attach.AgentLoadException: Failed to load agent library: instrument was not loaded.Can't find dependent libraries
Hinweise zur Laufzeitumgebung von „ Java “ 21
Wenn Sie „ Java “ Runtime 21 verwenden, werden möglicherweise die folgenden Warnmeldungen angezeigt:
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 VM-Argumenten hinzu, bevor Sie Ihre Anwendung starten:
-XX:+EnableDynamicAgentLoading
$TMP Anforderungen an die Verzeichnisberechtigungen
Der Host-Agent von „ Instana “ erstellt temporäre JAR-Dateien im Verzeichnis $TMP/.instana . Diese JAR-Dateien werden für die Überwachung von „ JVM “ benötigt. Um eine erfolgreiche Überwachung von „ JVM “ zu gewährleisten, stellen Sie sicher, dass der Root-Benutzer, unter dem der Agent ausgeführt wird, und der Benutzer, unter dem der „ JVM “ ausgeführt wird, über die erforderlichen Lese- und Schreibrechte für das $TMP Verzeichnis verfügen. Entfernen Sie außerdem nicht die Dateien „ Instana “ aus den $TMP Verzeichnissen $TMP/.instana und.
Begrenzung der Anstiegsgeschwindigkeit
Wenn Sie im Agent-Protokoll Einträge wie Suppressed spans due to high number of short oder sehen Discarded span due to queue overflow, bedeutet dies, dass der „ Java “-Tracer bei der Span-Verarbeitung stark ausgelastet war. Infolgedessen reduziert der „ Java -Tracer“ die Anzahl der Spannen, um Leistungsprobleme in der Anwendung zu vermeiden.
Um die Auslastung zu verringern, führt der „ Java “ Tracer die folgenden Schritte aus:
- Er unterdrückt die Exitbereiche, die eine kurze Dauer haben.
- Wenn die Arbeitslast weiterhin hoch ist, erstreckt sie sich in Stapeln.
- Wenn die Stapelverarbeitung nicht erfolgreich ist, werden einige Bereiche gelöscht.