Azure Command Launcher for Java(jaz)是一款輕量級的工具,簡化了Java開發者在 Azure 上執行應用程式的方式。
透過智慧地套用專為雲端環境量身打造的 Java 虛擬機(JVM)選項,該工具降低設定開銷並提升資源利用率,並帶來更高的效能潛力。
此工具適用於下列項目的開發人員:
- 想要更好的 JVM 預設設定,但又不想深入研究調校指南。
- 利用 Spring Boot、Quarkus 或 Micronaut 等框架開發並部署雲端原生微服務。
- 偏好容器式工作流程,如 Kubernetes 和 OpenShift。
- 部署 Java 工作負載至 Azure 容器應用程式、Azure Kubernetes Service、Azure Red Hat OpenShift 或 Azure 虛擬機器。
主要功能
- 🛠 自動調整 JVM 旗標以支援雲端原生部署。
-
🚀 即插即用體驗。 只要直接丟進你的 Dockerfile 或啟動腳本,把指令替換
java成jaz。 - ☁️ 針對 Azure 環境進行優化。
- 🔧 可透過環境變數自訂。 有幾種方法可以安全地推出設定變更。
支援的環境
在 Linux 環境中,凡是有可用的 Java 啟動器,Azure for Java 的指令啟動器都可以使用。 它已在以下 Azure 與 CI/CD 平台上進行驗證與測試:
- Azure Kubernetes Service (AKS)
- Azure 容器應用程式
- Azure App 服務
- Azure Functions
- Azure Red Hat OpenShift (ARO)
- Azure 虛擬機器
- Azure DevOps
- GitHub Codespaces
- GitHub Actions
這很重要
Azure 指令啟動器(Java)會讀取 cgroup v1 和 v2 的資訊,以判斷可用資源並相應調整 JVM。
它會探測 /sys/fs/cgroup 內的檔案,以發現記憶體限制和其他資源限制。
如果 cgroup 檔案系統未掛載在 /sys/fs/cgroup,Java Azure 指令啟動器可能無法正確偵測容器化限制,導致效能不佳甚至記憶體不足錯誤。
我們尚未在任何支援的環境中發現這種情況,但在自訂環境中可能會遇到這種限制。
更多資訊請參見「為什麼我的 cgroup 掛點很重要?」。
公開預覽
Azure Java 命令啟動器現已公開預覽版! 請參閱 公開預覽公告 ,了解此工具及其優點的介紹。
運作方式
Azure Java 指令啟動器位於你的容器或虛擬機啟動指令與 JVM 之間。 當你啟動這個工具時,它會:
- 偵測雲端環境(例如容器限制與可用記憶體)。
- 分析工作負載類型並選擇最適合的 JVM 調校標誌,例如:
- 堆積大小。
- 垃圾回收器的選擇與調校。
- 根據需要進行日誌記錄和診斷設定。
- 啟動 Java 程序,傳遞調校旗標及使用者提供的參數。
- 隱形地將 stdout、stderr、stdin 和作業系統訊號中繼到 Java 程序之間。
- 監控 Java 程序,並在程序終止時中繼其退出程式碼。
範例使用方式
Azure 指令啟動器用於 Java 是 java 指令的可直接替代,無需更改程式碼。 只要在啟動腳本中替換 java 為 jaz ,例如替換 java -jar foo.jar 為 jaz -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 上安裝 Azure Java 指令啟動器,或如何安裝容器映像檔的說明,請參閱安裝頁面。
藍圖
- ⚙️ JVM 設定檔
- 📦 AppCDS 支援
- 🔄 連續調音
- 📊 遙測
- 📦 萊頓支援
Changelog
你可以在Azure Command Launcher for Java 版本頁面上找到 Azure Command Launcher for Java 的版本資訊和變更記錄。
遙測
Azure Command Launcher for Java 會收集使用資料並傳送給 Microsoft,以協助改進我們的產品與服務。 若要深入瞭解,請閱讀我們的 隱私聲明。