ヒープ・サイズ・パラメーターの変更

JVMを調整するには、最低ヒープ・サイズ、最大ヒープ・サイズ、および新世代ヒープ・サイズを調整します。

デフォルトでは、DataStax Enteprise(DSE)は、RAMの容量とインストールされているRAMの種類に応じてJava仮想マシン(JVM)のヒープ・サイズを1~32 GBに設定します。このcassandra-env.sh は、次の数式を使用して最小サイズおよび最大サイズを同じ値に自動的に構成します。
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の¼

手順

  1. GCロギングを有効にするには、loggcパラメーターを、jvm.optionsファイルでコメント解除する必要があります。
    -Xloggc:/var/log/cassandra/gc.log
    Cassandraを再起動した後、ログが作成され、GC イベントが記録されます。
  2. ヒープ・サイズを jvm.optionsファイルで設定します。
    • 最小および最大ヒープ・サイズ両方をコメント解除して設定します。たとえば、16ギガバイト(GB)に設定するには、次のようにします。
      -Xms16G
      -Xmx16G

      ストップ・ザ・ワールドGCの一時停止を避けるために、サイズ変更時は最小値(-Xms)および最大値(-Xmx)のヒープ・サイズを同じ値に設定し、起動時にヒープをメモリー内にロックすることで、スワップアウトを防げます。

    • CMSのヒープを調整するには、新世代のヒープ・サイズをコメント解除して設定します。開始点として、物理的CPUコアごとに新しいパラメーターを100 MBに設定します。たとえば、最新の8コア+システムの場合は、次のようにします。
      -Xmn800M

      サイズが大きいほど、GCの一時停止時間が長くなります。サイズが小さいほど、GCの一時停止は短くなりますが、通常、負荷が大きくなります。

  3. Cassandraを再起動し、読み取りの多い操作または書き込みの多い操作を実行します。
  4. GCログを確認します。
    注: この方法により、テスト・ノードのパフォーマンスが低下しますが、通常、クラスター・パフォーマンスが大幅に低下することはありません。

    パフォーマンスの改善が見られない場合は、DataStaxサービス・チームまでご相談ください。