适用于 Java 的 Azure 命令启动器(jaz)是一个轻型实用工具,可简化开发人员在Azure上运行其应用程序的Java方式。
通过智能地应用为云环境定制的Java虚拟机(JVM)选项,该工具可减少配置开销,并现成地提高资源利用率,并具有更高的性能潜力。
此工具非常适合以下开发人员:
- 想要更好的 JVM 默认值,而无需深入探讨优化指南。
- 使用 Spring Boot、Quarkus 或 Micronaut 等框架开发和部署云本机微服务。
- 首选基于容器的工作流,例如 Kubernetes 和 OpenShift。
- 在Azure 容器应用、Azure Kubernetes 服务、Azure Red Hat OpenShift或Azure 虚拟机上部署Java工作负荷。
主要功能
- 🛠 自动优化调整用于云原生部署的 JVM 参数。
-
🚀 即插即用体验。 只需放入 Dockerfile 或启动脚本,即可将
java命令替换为jaz。 - ☁️ 针对Azure环境进行优化。
- 🔧 可通过环境变量进行自定义。 可通过多种方式安全地推出配置更改。
支持的环境
在 Linux 环境中,只要 Java 启动器可用,就可以使用适用于 Java 的 Azure 命令启动器。 它已通过以下Azure和 CI/CD 平台进行验证和测试:
- Azure Kubernetes Service (AKS)
- Azure 容器应用
- Azure App 服务
- Azure Functions
- Azure Red Hat OpenShift (ARO)
- Azure 虚拟机
- Azure DevOps
- GitHub Codespaces
- GitHub Actions
重要
用于Java的 Azure 命令启动器读取 cgroup v1 和 v2 信息,以确定可用的资源并相应地优化 JVM。
它会探测内部 /sys/fs/cgroup 的文件,以发现内存限制和其他资源约束。
如果未将 cgroup 文件系统装载到 /sys/fs/cgroup,则Java的 Azure 命令启动器可能无法正确检测容器化限制,从而导致性能不佳,甚至内存不足错误。
我们在任何受支持的环境中都没有发现这种情况,但可能会在自定义环境中遇到此限制。
有关详细信息,请参阅 “为什么我的 cgroup 装入点很重要?”。
公共预览
Java的 Azure 命令启动器现在以公共预览版提供! 阅读 公共预览版公告 ,了解此工具及其优势。
工作原理
用于Java的 Azure 命令启动器位于容器或虚拟机启动命令与 JVM 之间。 启动该工具时,它会:
- 检测云环境(例如容器限制和可用内存)。
- 分析工作负荷类型并选择最适合 JVM 优化标志,例如:
- 堆大小设定。
- 垃圾回收器选择和调优。
- 根据需要配置日志记录和诊断设置。
- 启动Java进程,向其传递优化标志和任何用户提供的参数。
- 隐式地中继 stdout、stderr、stdin 以及操作系统信号到和从 Java 进程。
- 监视Java进程并在终止时中继其退出代码。
示例用法
用于 Java 的 Azure 命令启动器是 java 命令的直接替代品,无需更改代码。 只需在启动脚本中替换为 javajaz ,例如替换为 java -jar foo.jarjaz -jar foo.jar。
而不是手动优化 JVM 选项:
JAVA_OPTS="-XX:... several JVM tuning flags"
java $JAVA_OPTS -jar myapp.jar
使用 jaz:
jaz -jar myapp.jar
默认情况下,如果 jaz 未检测到任何用户提供的调优标志,它会应用其调优设置。
如果Java命令行参数或Java选项环境变量已包含用户提供的优化标志(如-X*或-XX*),jaz则保留这些设置,并且不会添加自己的设置。 若要强制 jaz 应用其优化(无需删除用户提供的优化标志),请设置 JAZ_IGNORE_USER_TUNING=1。
应用程序可能会从以下项中自动受益:
- 久经考验的默认值,适用于云原生和容器工作负载。
- 减少了云中的内存浪费。
- 更好的启动和预热性能。
安装
有关如何在 Linux 上安装适用于 Java 的 Azure 命令启动器,以及如何安装容器映像的说明,请参阅“安装”页。
路线图
- ⚙️ JVM 配置概要
- 📦 AppCDS 支持
- 🔄 持续调优
- 📊 遥测
- 📦 Leyden 支持
Changelog
你可以在Azure Command Launcher for Java 发布页面上查看 Azure Command Launcher for Java 的发行说明和更新日志。
遥测
Azure用于Java的命令启动器收集使用情况数据并将其发送到Microsoft,以帮助改进我们的产品和服务。 若要了解详细信息,请阅读我们的 隐私声明。