Java仮想マシンの調整

Java仮想マシン(JVM)を調整することによってパフォーマンスを向上させたり、高いメモリー消費量を低減したりします。

Java仮想マシン(JVM)を調整することによってパフォーマンスを向上させたり、高いメモリー消費量を低減したりします。次のコンポーネントに対する操作はJVMヒープで実行されます。
  • ブルーム・フィルター
  • パーティション・サマリー
  • パーティション・キー・キャッシュ
  • 圧縮オフセット
  • SSTableインデックス・サマリー

このメタデータは、メモリーに常駐し、データの合計に比例します。一部のコンポーネントは、メモリーの合計サイズに比例して大きくなります。データベースは読み取りまたはアンチエントロピー・リペア用のレプリカを収集し、ヒープ・メモリー内でレプリカを比較します。

データベースに書き込まれたデータは、最初にヒープ・メモリー内のmemtableに格納されます。memtableは、ディスクのSSTableにフラッシュされます。

注: データベースはオフヒープ・メモリーを次のように使用します。
  • ページのキャッシュ。データベースは、ディスク上のファイルを読み取ったときに、追加メモリーをページのキャッシュとして利用します。
  • ブルーム・フィルターと圧縮オフセット・マップはオフヒープに置かれます。
  • データベースは、キャッシュされた行をネイティブのメモリー、Javaヒープ外に格納します。これにより、JVMヒープに対する要求がともに小さくなります。これは、JVMガーベージ・コレクションのパフォーマンスにとって最適なヒープ・サイズを保つのに役立ちます。

DSEの高度な機能によるメモリーの使用

DataStax Enterpriseの高度な機能では、ワークロード・タイプが有効になっているノード上で追加のメモリーを使用します。

Analytics

DSE Analyticsノードでは、個別のJVMでSparkが実行されます。したがって、Cassandra JVMを調整してもSpark操作には直接影響しません。DSE Analyticsのワークロードは通常、読み取りの多いものになります。それは解析ノードでは、相当数の範囲読み取りクエリーが実行されるためです。追加メモリーを使用する場合の考慮事項は次のとおりです。
  • SparkエグゼキューターはSparkで最もメモリー使用量の多いプロセスです。これらはデフォルトでG1 GCを使用するように調整されています。エグゼキューター・ヒープのサイズをspark.defaults.confで調整します。エグゼキューター・ヒープを調整する場合は、OSページ・キャッシュ用にゆとりを残すことを検討してください。
  • Spark OOMの一般的な原因はシャッフル・ステップです。RepartitionByCassandraReplica / JoinWithCassandraTableをRDDジョブで使用してシャッフルを行うことは避けてください。
ヒント:Spark JVMおよびメモリーの管理」を参照してください。

Graph

DSE Graphワークロードには、Search、Analytics、またはその両方が含まれていることがよくあります。SearchワークロードとAnalyticsワークロードのGCを調整します。Graphクエリーは、SearchワークロードおよびAnalyticsワークロードに必要なメモリーに加えて実行時にメモリーを利用します。このワークロードは、そのオブジェクトが短命であるという特徴があります。Searchが有効なほとんどのDSE Graphデプロイは、G1 GCヒープ・サイズが32 GBのRAMの中でも、128 GB以上のシステムで実行されます。