Azure Command Launcher for Java (public preview)

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 或啟動腳本,把指令替換 javajaz
  • ☁️ 針對 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 之間。 當你啟動這個工具時,它會:

  1. 偵測雲端環境(例如容器限制與可用記憶體)。
  2. 分析工作負載類型並選擇最適合的 JVM 調校標誌,例如:
    • 堆積大小。
    • 垃圾回收器的選擇與調校。
    • 根據需要進行日誌記錄和診斷設定。
  3. 啟動 Java 程序,傳遞調校旗標及使用者提供的參數。
  4. 隱形地將 stdout、stderr、stdin 和作業系統訊號中繼到 Java 程序之間。
  5. 監控 Java 程序,並在程序終止時中繼其退出程式碼。

範例使用方式

Azure 指令啟動器用於 Java 是 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 上安裝 Azure Java 指令啟動器,或如何安裝容器映像檔的說明,請參閱安裝頁面

藍圖

  • ⚙️ JVM 設定檔
  • 📦 AppCDS 支援
  • 🔄 連續調音
  • 📊 遙測
  • 📦 萊頓支援

Changelog

你可以在Azure Command Launcher for Java 版本頁面上找到 Azure Command Launcher for Java 的版本資訊和變更記錄。

遙測

Azure Command Launcher for Java 會收集使用資料並傳送給 Microsoft,以協助改進我們的產品與服務。 若要深入瞭解,請閱讀我們的 隱私聲明