Java用の Azure コマンド ランチャー (パブリック プレビュー)

Java用の Azure コマンド ランチャー (jaz) は、開発者がAzureでアプリケーションを実行Java方法を簡略化する軽量ユーティリティです。 クラウド環境向けに調整Java仮想マシン (JVM) オプションをインテリジェントに適用することで、このツールは構成オーバーヘッドを削減し、すぐに使用できるリソース使用率を向上させ、パフォーマンスを向上させる可能性が高くなります。

次の条件に当てはまる開発者に最適なツールです。

  • チューニング ガイドに深く取り組まずに、JVM の既定値を改善する必要があります。
  • Spring Boot、Quarkus、Micronaut などのフレームワークを使用して、クラウド ネイティブ マイクロサービスを開発してデプロイします。
  • Kubernetes や OpenShift などのコンテナー ベースのワークフローを優先します。
  • Azure Container Apps、Azure Kubernetes Service、Azure Red Hat OpenShift、またはAzure 仮想マシンにJavaワークロードをデプロイします。

主な機能

  • 🛠 クラウドネイティブデプロイの JVM フラグを自動的に調整します。
  • 🚀 プラグ アンド プレイ エクスペリエンス。 Dockerfile にドロップするか、スクリプトを起動して、 java コマンドを jazに置き換えます。
  • ☁️ Azure環境向けに最適化されています。
  • 🔧 環境変数を使用してカスタマイズできます。 構成の変更を安全にロールアウトするには、いくつかの方法があります。

サポートされる環境

Java用の Azure コマンド ランチャーは、Linux ベースの環境でJavaランチャーを使用できる場所であればどこでも使用できます。 これは、次のAzureおよび CI/CD プラットフォームで検証およびテストされています。

  • Azure Kubernetes Service (AKS)
  • Azure Container Apps
  • Azure App Service
  • Azure Functions
  • Azure Red Hat OpenShift (ARO)
  • Azure 仮想マシン
  • Azure DevOps
  • GitHub Codespaces
  • GitHub Actions

Important

Java用の Azure コマンド ランチャーは、cgroup v1 と v2 の情報を読み取り、使用可能なリソースを決定し、それに応じて JVM を調整します。 /sys/fs/cgroup内のファイルをプローブして、メモリ制限やその他のリソース制約を検出します。

cgroup ファイルシステムが /sys/fs/cgroup にマウントされていない場合、Javaの Azure コマンド ランチャーでコンテナー化の制限が正しく検出されず、パフォーマンスが低下したり、メモリ不足エラーが発生したりする可能性があります。 サポートされている環境でこれが懸念されるシナリオは特定していませんが、カスタマイズされた環境でこの制限が発生する可能性があります。

詳細については、「 cgroup マウント ポイントが重要な理由」を参照してください。

パブリック プレビュー

Java用のAzure コマンド ランチャーがパブリック プレビューで利用可能になりました。 このツールとその利点の概要については、 パブリック プレビューのお知らせ をお読みください。

動作方法

Java用の Azure コマンド ランチャーは、コンテナーまたは仮想マシンのスタートアップ コマンドと JVM の間に配置されます。 ツールを起動すると、次のようになります。

  1. クラウド環境 (コンテナーの制限や使用可能なメモリなど) を検出します。
  2. ワークロードの種類を分析し、次のような最適な JVM チューニング フラグを選択します。
    • ヒープサイズの設定
    • ガベージ コレクターの選択とチューニング。
    • 必要に応じて、ログ記録と診断の設定を行います。
  3. Java プロセスを起動し、チューニング フラグとユーザー指定の引数を渡します。
  4. Java プロセスとの間で stdout、stderr、stdin、OS のシグナルを非表示にリレーします。
  5. Java プロセスを監視し、終了時にその終了コードをリレーします。

使用例

Java用の Azure コマンド ランチャーは、java コマンドのドロップインの代わりであり、コードを変更する必要はありません。 javaを起動スクリプトのjazに置き換えるだけです。たとえば、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設定します。

アプリケーションでは、次のメリットが自動的に得られる場合があります。

  • クラウド ネイティブワークロードとコンテナー ワークロードの、バトルテスト済みの既定値。
  • クラウド内のメモリの無駄を減らしました。
  • 起動とウォームアップのパフォーマンスの向上。

取り付け

Azure Command Launcher for Java on Linux をインストールする方法、またはコンテナー イメージをインストールする方法については、「インストール」ページを参照してください。

ロードマップ

  • ⚙️ JVM 構成プロファイル
  • 📦 AppCDS のサポート
  • 🔄 継続的なチューニング
  • 📊 テレメトリー
  • 📦 Leyden のサポート

変更ログ

Javaリリース ノートと変更ログのAzure コマンド ランチャーは、Java リリース用の Azure コマンド ランチャー ページで確認できます。

テレメトリ

Azureコマンド ランチャー for Javaは使用状況データを収集し、製品やサービスの改善に役立つMicrosoftに送信します。 詳細については、 プライバシーに関する声明をお読みください。