有关适用于 Java 的 Azure 命令启动器(公共预览版)的常见问题

提供有关适用于 Java 的 Azure 命令启动器常见问题的解答。

jaz 与 java 命令有何不同?

除非用户显式配置,否则该 java 命令将运行具有默认设置的 HotSpot JVM(Java 虚拟机)。 jaz 是用于 Java 的 Azure Command Launcher 的一个组件,它使用经过战斗测试的云优化 JVM 优化默认值启动 java ,旨在提高 Azure VM 和容器上的性能和成本效益。

关键优势:开发人员无需手动优化 JVM。 jaz 为他们做。

如果我已在我的环境中设置一些 JVM 选项,会发生什么情况?

如果工作负荷包含 JVM 优化标志,该 jaz 命令不会应用其自己的优化默认值。 jaz java使用所选标志启动。

建议删除你的工作负荷的调整标志,并让适用于 Java 的 Azure 命令启动器应用其自身的标志。

还可以配置 jaz 以忽略您设置的优化标志,并使用其优化默认值。 请考虑使用此配置来验证 jaz,以最小化对工作负荷配置的更改。 为此,请设置以下环境变量:

export JAZ_IGNORE_USER_TUNING=1

忽略用户优化设置适用于命令行参数、环境变量读取方式 java和 @-files。

还可以通过设置以下环境变量来配置 jaz 跳过其所有优化默认值:

export JAZ_BYPASS=1

绕过选项允许你加入适用于 Java 的 Azure 命令启动器,而不会影响当前优化,即使工作负荷使用命令的默认行为 java 也是如此。 在清理 JVM 优化标志之前,此行为可能有助于验证工具的行为。

在排查与 JVM 调优相关的问题时,绕过调优可能也很有用。

哪些 JVM 选项被视为优化标志?

jaz命令会将大多数以-X-XX开头的标志视为优化标志,例如-Xmx<size>。 标志的一个显著示例,该标志以 -X 但不是优化标志 -Xlog:<opts>开头。

更确切地说,使用以下列表中的逻辑评估每个 JVM 选项。 此列表介绍适用于 Java 的 Azure 命令启动器最新版本中的逻辑。

  1. 如果选项以不是 -X 的任何文本开头,则不是优化标志。
  2. 如果选项与下列任一正则表达式匹配,则它不是优化标志:
    • ^-Xlog.+$
    • ^-XX:ErrorFile=.*$
    • ^-XX:[+-]?HeapDump.*$
    • ^-XX:[+-].*OnOutOfMemoryError$
  3. 否则,此选项是微调标志。

jaz 查找调优标志时,它会检查传递给它的参数以及 java 自动读取的环境变量。 环境变量包括:

  • Java 8: JAVA_TOOL_OPTIONS_JAVA_OPTIONS
  • Java 9 及更高版本:JAVA_TOOL_OPTIONS、、 JDK_JAVA_OPTIONS_JAVA_OPTIONS

jaz 还处理 @-files,也称为命令行参数文件。

是否可以在使用 jaz 时传递 Java Agent 参数?

Yes. 你仍然可以传递 -javaagent 其他未优化标志的标志,并 jaz 遵循它们。 可以保留有用的诊断标志,例如:

  • -Xlog 用于日志记录
  • -javaagent For Application Insights 或其他应用程序性能监视 (APM) 检测代理

jaz 是否与非 Azure 环境兼容?

jaz 主要针对 Azure 容器和虚拟机进行设计和测试,但在技术上可以在其他位置运行。 但是,某些高级优化和未来的功能可能是特定于 Azure 的。

jaz 是否可用于 Windows Server?

jaz 目前适用于 x64 和 arm64 环境中的 Linux。 如果立即需要 Windows Server,请联系我们 openjdk-support@microsoft.com