提供有关适用于 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 命令启动器最新版本中的逻辑。
- 如果选项以不是
-X的任何文本开头,则不是优化标志。 - 如果选项与下列任一正则表达式匹配,则它不是优化标志:
^-Xlog.+$^-XX:ErrorFile=.*$^-XX:[+-]?HeapDump.*$^-XX:[+-].*OnOutOfMemoryError$
- 否则,此选项是微调标志。
当 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用于日志记录 -
-javaagentFor Application Insights 或其他应用程序性能监视 (APM) 检测代理
jaz 是否与非 Azure 环境兼容?
jaz 主要针对 Azure 容器和虚拟机进行设计和测试,但在技术上可以在其他位置运行。
但是,某些高级优化和未来的功能可能是特定于 Azure 的。
jaz 是否可用于 Windows Server?
jaz 目前适用于 x64 和 arm64 环境中的 Linux。
如果立即需要 Windows Server,请联系我们 openjdk-support@microsoft.com