5.7. 異なるメモリー設定を指定する
Red Hat build of Keycloak コンテナーでは、初期ヒープサイズと最大ヒープサイズにハードコード値を指定せずに、コンテナーの合計メモリーに対する相対値を使用します。この動作は、JVM オプション -XX:MaxRAMPercentage=70
および -XX:InitialRAMPercentage=50
によって実現されます。
-XX:MaxRAMPercentage
オプションは、最大ヒープサイズをコンテナーメモリーの合計の 70% として表します。-XX:InitialRAMPercentage
オプションは、初期ヒープサイズをコンテナーメモリー全体の 50% として表します。これらの値は、Red Hat build of Keycloak メモリー管理の詳細な分析に基づいて選択されています。
ヒープサイズはコンテナーの合計メモリーに基づいて動的に計算されるため、コンテナーの メモリー制限を必ず設定 してください。以前は、最大ヒープサイズは 512 MB に設定されていましたが、同じ値に近づけるには、メモリー制限を少なくとも 750 MB に設定する必要があります。小規模な実稼働環境対応のデプロイメントの場合、推奨されるメモリー制限は 2 GB です。
ヒープに関連する JVM オプションは、環境変数 JAVA_OPTS_KC_HEAP
を設定することによってオーバーライドされる可能性があります。JAVA_OPTS_KC_HEAP
のデフォルト値は、kc.sh
または kc.bat
スクリプトのソースコードにあります。
たとえば、環境変数とメモリー制限を次のように指定できます。
podman run --name mykeycloak -p 8080:8080 -m 1g \ -e KC_BOOTSTRAP_ADMIN_USERNAME=admin -e KC_BOOTSTRAP_ADMIN_PASSWORD=change_me \ -e JAVA_OPTS_KC_HEAP="-XX:MaxHeapFreeRatio=30 -XX:MaxRAMPercentage=65" \ registry.redhat.io/rhbk/keycloak-rhel9:26 \ start-dev
メモリー制限が設定されていない場合、ヒープサイズがコンテナーの合計メモリーの最大 70% まで増加する可能性があるため、メモリー消費量が急激に増加します。JVM がメモリーを割り当てると、現在の Red Hat build of Keycloak の GC 設定により、そのメモリーが消極的に OS に返されます。