Keycloak JVMオプション
このドキュメントでは、KeycloakのパフォーマンスチューニングのためのJVMオプションに関する情報について説明します。
JVMヒープチューニングがKeycloakのパフォーマンスに関連する理由
Keycloakは、Javaベースのアプリケーションであり、メモリ管理のためにJVMに依存しています。適切なヒープサイズ設定は、アプリケーションがメモリ関連の問題に遭遇することなく、その動作を処理するのに十分なメモリを持つことを保証します。効率的なガベージコレクション(GC)はこのプロセスにおいて重要な要素です。ヒープが小さすぎると、GCが頻繁に実行され、CPU使用率が上昇し、潜在的に一時停止を引き起こす可能性があります。逆に、過度に大きなヒープは、より長いGC一時停止を引き起こす可能性があります。ヒープサイズを適切に調整することにより、ガベージコレクションに費やされる時間が最小限に抑えられ、アプリケーション全体の処理能力が向上します。
さらに、適切なヒープチューニングは、メモリ不足(OOM)エラーを防ぐのに役立ち、Keycloakの安定性と信頼性に貢献します。また、認証および認可タスクに不可欠なレイテンシと応答時間を改善します。適切なメモリ管理により、アプリケーションは効果的にスケールし、パフォーマンスの低下なしに増加した負荷を処理できます。さらに、最適化されたヒープ設定は、効率的なリソース利用を保証し、リソースの過小利用と過剰消費の両方を防ぎます。
JVMオプションの設定
JVMオプションは、JVM_OPTS/JAVA_OPTS_KC_HEAPなどの特定の変数をオーバーライドでき、特別なフラグが有効になっているデプロイメントで設定できます。複数のコンテナ/サーバーがある場合は、構成がすべてのKeycloak JVMに一貫した方法で適用されていることを確認してください。
構成が適用されているかどうかは、Keycloakサーバーノードで以下のコマンドを実行することで確認できます。このコマンドは、特定のJVMに適用されているVM.flagsを出力します。
jcmd 1 VM.flags
JAVA_OPTS_KC_HEAP
コンテナ固有のワークロードJVMヒープオプション
- -XX:MaxRAMPercentage
-
JVMが使用できるシステムの物理メモリの最大パーセンテージを設定します。
- -XX:MinRAMPercentage
-
JVMが使用できるシステムの物理メモリの最小パーセンテージを設定します。
- -XX:InitialRAMPercentage
-
JVMに割り当てられるシステムの物理メモリの初期パーセンテージを設定します。
ガベージコレクションチューニングオプション
- -XX:+UseG1GC
-
G1ガベージコレクターを有効にします。
- -Xlog:gc:file="path/to/file"
-
これを設定してGCログを生成し、GCログ分析を実行するために収集できます。
- -XX:MaxGCPauseMillis
-
最大GC一時停止時間のターゲットを設定します。
パフォーマンスチューニングオプション
- -XX:MinHeapFreeRatio
-
ヒープを拡張する前に維持する空きヒープスペースの最小パーセンテージを設定します。
- -XX:MaxHeapFreeRatio
-
ヒープを縮小する前に維持する空きヒープスペースの最大パーセンテージを設定します。
- -XX:GCTimeRatio
-
ガベージコレクション時間とアプリケーション時間の望ましい比率を設定します。
- -XX:AdaptiveSizePolicyWeight
-
JVMにおける適応型サイズポリシーの決定の重みを調整します。
- -XX:ConcGCThreads
-
並行ガベージコレクションに使用されるスレッドの数を指定します。
- -XX:CICompilerCount
-
ジャストインタイム(JIT)コンパイル用のコンパイラスレッドの数を設定します。