系統需求
Instana 支援從第 6 版至第 19 版的所有 Java 執行時期。 使用最新 JVM 版本來使用無 bug-free 執行時期。
JVM 支援
下表概述支援的 JVM 發行套件:
| 名稱 | 限制 |
|---|---|
| Amazon Corretto | |
| Azul Zulu | |
| IBM J9 | 請參閱 IBM J9 限制。 |
| Eclipse OpenJ9 | |
| OpenJDK | |
| AdoptOpenJDK | |
| Oracle HotSpot | |
| SAP JVM | |
| Sun HotSpot | |
| BEA JRockit |
Java 執行時期 8 或更早版本的考量
如果您使用 Java Runtimes 8 或更早版本,請確定您已完成下列動作:
在 Amazon Corretto、Azul Zulu、 OpenJDK、 Oracle HotSpot或 SAP JVM 上,使
tools.jar檔案可在每一個受監視 JVM 的執行時期使用。 檔案位於$JAVA_HOME/lib/tools.jar。如果您使用 Java 8 ,請升級至 Java 8 1.8.0_181 或更新版本。 最高到 1.8.0_40 的 Java 8 建置有許多與 lambda 函數實作相關的已知問題。 因此對於 Java 8 , Instana 代理程式不支援 1.8.0_40 或更舊版本。 因此,您必須升級至更新版本,因為其中部分損毀已修正。
Java 執行時期 9 或更新版本的考量
Java 9 引進基於 Jig鋸架構的模組化建置。 如果您使用 Java Runtimes 9 或更新版本,請確保完成下列動作:
如果您使用自訂執行時期映像檔 (例如以
jmod或jlink建立的執行時期映像檔) ,請確定您在已檢測的 JVM 中包含下列模組:java.instrumentjdk.attach
若要檢查 Java 9 或更新版本執行時期是否包含必要的
java.instrument及jdk.attach模組,請執行下列指令:java --list-modules附註: 如果您在 JVM 8 或更早版本上執行指令,則會顯示
Unrecognized option: --list-modules錯誤訊息。如果 Apache Tomcat 在 Windows 上以服務方式執行,則受監視程序不會以
C:\java12\bin\java.exe檔執行,而是以C:\Program Files\Apache Software Foundation\Tomcat 8.5\bin\Tomcat8.exe檔執行。Instana 支援此設定。 但在啟動服務之前,執行服務之 JVM 上的
bin目錄必須位於PATH上。 若要設定路徑,請執行下列指令:set PATH=%PATH%;C:\java12\bin。必須設定路徑,因為伺服器
jvm.dll檔案需要載入C:\java12\bin\instrument.dll檔案。 如果路徑上未指定檔案,則伺服器找不到它,且會顯示下列錯誤:com.sun.tools.attach.AgentLoadException: Failed to load agent library: instrument was not loaded.Can't find dependent libraries
IBM J9 限制
Instana 支援 IBM J9 ,但有下列限制:
如果
-javaagent未設定為指令行引數,則 IBM J9 的某些版本可能不支援所有必要特性。 因此,請執行下列指令,以 Java 代理程式啟動 JVM:java -javaagent:instana-javaagent-1.0.0.jar -jar app.jar server此 JAR 檔位於 maven central中。 如需 JVM 代理程式的相關資訊,請參閱 GitHub 儲存庫。
如果您使用 Java 8-Service refresh 3 修正套件 22 (2016 年 12 月) ,請使用
-XX:+EnableHCR選項來執行相同的作業。 透過使用此暫時選項,延遲連接的代理程式可以重新定義或重新轉換類別。 此外,如果代理程式日誌中存在下列日誌行,請確保傳遞-XX:+EnableHCR選項作為啟動參數。WARN | instana-http-client-thread-16-2 | LoggerEndpoint | com.instana.agent - 1.1.680 | JVM (1234) - JVM does not support retransformation, tracing is currently unsupported不過,
-XX:+EnableHCR選項可能會導致效能降低,而且在未來不再需要時可能會移除。可能需要額外的指令行參數,才能從 IBM J9: 啟用追蹤和度量收集:
使用
-Dcom.ibm.tools.attach.enable=yes作為預設值。若為 IBM J9 SDK 6 或 IBM J9 SDK 7 ,請完成下列步驟:
- 使用
-Xshareclasses:none設定來停用類別共用。 - 使用
-Xshareclasses:enableBCI設定,啟用支援位元組碼檢測 (BCI) 的類別共用實作。
附註: IBM J9 SDK 配置預設值具有下列差異:
- 第 6 版 (JRE 1.6.0) 和第 7 版 (JRE 1.7.0) 預設為不支援 BCI 的類別共用實作。 因此,必須關閉類別共用,或必須開啟 BCI 支援。
- 第 8 版 (JRE 1.8.0) 預設為支援 BCI 的類別共用實作。
- 使用
不相容代理程式
請勿同時嘗試使用來自多個供應商的代理程式。 您可能會遇到可能導致應用程式失敗的無法預期結果。 Instana 代理程式不會自動監視同時執行下列代理程式的 JVM:
- AppDynamics
- DataDog
- Dynatrace
- 輝光根
- Kanela , Kamon Instrumentation 代理程式
- ManageEngine APM Insight Java 代理程式
- New Relic
- Oracle Java 飛航記錄器
- OpenTelemetry Instrumentation for Java
- 河床 AppInternals
- 已載入 Spring
- Wily Introscope ,也稱為 CA Application Performance Management 和 Broadcom DX Application Performance Management
如果您決定監視執行任何這些代理程式的 JVM ,請設定下列值:
com.instana.plugin.javatrace:
trace-jvms-with-problematic-agents: true
跨距速率限制
如果您在代理程式日誌中看到類似 Suppressed spans due to high number of short 或 Discarded span due to queue overflow 的日誌,則表示 Java 追蹤程式在跨距處理程序中遇到大量負載。 因此, Java 追蹤程式會捨棄一些文字段,以避免應用程式中發生效能問題。
為了減少負載, Java 追蹤程式會執行下列步驟:
- 它會抑制持續時間較短的結束跨距。
- 如果負載仍然偏高,則會以批次方式進行分組。
- 如果批次處理不成功,則會捨棄幾個跨距。