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

標準JVMオプション

-XX:MetaspaceSize

初期メタスペースサイズを設定します。

-XX:MaxMetaspaceSize

最大メタスペースサイズを設定します。

JAVA_OPTS_KC_HEAP

コンテナ固有のワークロードJVMヒープオプション

-XX:MaxRAMPercentage

JVMが使用できるシステムの物理メモリの最大パーセンテージを設定します。

-XX:MinRAMPercentage

JVMが使用できるシステムの物理メモリの最小パーセンテージを設定します。

-XX:InitialRAMPercentage

JVMに割り当てられるシステムの物理メモリの初期パーセンテージを設定します。

非コンテナ固有のワークロードJVMヒープオプション

-Xms

JVMの初期ヒープサイズを設定します。

-Xmx

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)コンパイル用のコンパイラスレッドの数を設定します。

分析のための追加のJVMオプション

-XX:+ExitOnOutOfMemoryError

OutOfMemoryErrorで終了します。

-XX:FlightRecorderOptions=stackdepth=512

ヒープ分析のために記録できるJFRのJava Flight Recorderの深さ構成を設定します。