ヒープ・サイズ・パラメーターの変更
JVMを調整するには、最低ヒープ・サイズ、最大ヒープ・サイズ、および新世代ヒープ・サイズを調整します。
max(min(1/2 ram, 1024 megabytes), min(1/4 ram, 32765 megabytes))
JVMヒープ・サイズを調整するには、jvm.options ファイルを使用してパラメーターをコメント解除して設定します。
- 最小(
-Xms
) - 最大(
-Xmx
) - 新世代(
-Xmn
) - GCの並列処理(
-XX:+UseParallelGC
)
制約事項: デフォルト設定をオーバーライドする場合は、最小値と最大値の両方を jvm.options ファイルで定義する必要があります。
jvm.options
jvm.optionsファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/jvm.options |
tarボール・インストール | installation_location/resources/cassandra/conf/jvm.options |
cassandra-env.sh
cassandra-env.shファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/cassandra-env.sh |
tarボール・インストール | installation_location/resources/cassandra/conf/cassandra-env.sh |
ガイドラインと推奨事項
Javaヒープを32 GBより大きく設定すると、OSのページ・キャッシュ操作を妨げる可能性があります。頻繁にアクセスするデータのOSのページ・キャッシュを保持するオペレーティング・システムは、このデータをメモリーを維持するのに長けています。OSのページ・キャッシュを調整するプロパティは通常、行キャッシュを大きくするよりも優れたパフォーマンスを発揮します。プロダクション環境で使用する場合、以下のガイドラインに従って環境に応じてヒープ・サイズを調整します。
- ヒープ・サイズは通常、システム・メモリーの¼から½の間になり、32 GBを超えることはありません。
- オフヒープ・キャッシュとファイル・システム・キャッシュに十分なメモリーを確保します。
- GCを調整する場合、GCロギングを有効にします。
- パラメーターを徐々に増減します。漸進的変更を行うたびに、変更を検証します。
- 特にDSE Searchを使用する際は、GCの並列処理を有効にします。
- GCInspectorクラスは、ガーベージ・コレクションに要する時間が200ミリ秒を超えるガーベージ・コレクションに関する情報をログに記録します。ガーベージ・コレクションが頻繁に発生し、完了までにある程度の時間(秒)を要する場合、JVMに対するガーベージ・コレクションの圧力が大きいことを示します。ガーベージ・コレクション・オプションの調整に加え、その他の解決策にはノードの追加やキャッシュ・サイズの縮小があります。
- G1を使用するノードの場合、DataStaxではMAX_HEAP_SIZEを可能な限り大きく(最大で64 GB)することを推奨しています。
注: 調整のヒントについては、「大型のヒープでGCの一時停止を改善するシークレットHotSpotオプション」を参照してください。
最大ヒープ・サイズと最小ヒープ・サイズ
推奨される最大ヒープ・サイズは、使用するGCによって異なります。
ハードウェアのセットアップ | 推奨されるMAX_HEAP_SIZE |
---|---|
G1は最新のコンピューター用(8コア以上)で、最大256 GB RAM | 16 GB~32765 MB。 「Javaパフォーマンス・チューニング」を参照してください。 |
CMSは最新のコンピューター用(8コア以上)で、最大256 GB RAM | 16 GB以下。 |
従来のコンピューター | 通常、8 GB。 |
新しいヒープ・サイズ
CMSの場合、新しい(若い)世代のヒープ・サイズも調整する必要があります。この設定により、新しいオブジェクトに割り当てられるヒープ・メモリーの量が決まります。データベースは、以下の2つの少ない方でこのプロパティのデフォルト値をメガバイト単位(MB)で計算します。
- コア数の100倍
- MAX_HEAP_SIZEの¼
手順
-
GCロギングを有効にするには、
loggc
パラメーターを、jvm.optionsファイルでコメント解除する必要があります。-Xloggc:/var/log/cassandra/gc.log
Cassandraを再起動した後、ログが作成され、GC イベントが記録されます。 -
ヒープ・サイズを jvm.optionsファイルで設定します。
- 最小および最大ヒープ・サイズ両方をコメント解除して設定します。たとえば、16ギガバイト(GB)に設定するには、次のようにします。
-Xms16G -Xmx16G
ストップ・ザ・ワールドGCの一時停止を避けるために、サイズ変更時は最小値(-Xms)および最大値(-Xmx)のヒープ・サイズを同じ値に設定し、起動時にヒープをメモリー内にロックすることで、スワップアウトを防げます。
- CMSのヒープを調整するには、新世代のヒープ・サイズをコメント解除して設定します。開始点として、物理的CPUコアごとに新しいパラメーターを100 MBに設定します。たとえば、最新の8コア+システムの場合は、次のようにします。
-Xmn800M
サイズが大きいほど、GCの一時停止時間が長くなります。サイズが小さいほど、GCの一時停止は短くなりますが、通常、負荷が大きくなります。
- 最小および最大ヒープ・サイズ両方をコメント解除して設定します。たとえば、16ギガバイト(GB)に設定するには、次のようにします。
- Cassandraを再起動し、読み取りの多い操作または書き込みの多い操作を実行します。
-
GCログを確認します。
注: この方法により、テスト・ノードのパフォーマンスが低下しますが、通常、クラスター・パフォーマンスが大幅に低下することはありません。
パフォーマンスの改善が見られない場合は、DataStaxサービス・チームまでご相談ください。