Java仮想マシンの調整
Java仮想マシン(JVM)を調整することによってパフォーマンスを向上させたり、高いメモリー消費量を低減したりします。
Java仮想マシン(JVM)を調整することによってパフォーマンスを向上させたり、高いメモリー消費量を低減したりします。次のコンポーネントに対する操作はJVMヒープで実行されます。
- ブルーム・フィルター
- パーティション・サマリー
- パーティション・キー・キャッシュ
- 圧縮オフセット
- SSTableインデックス・サマリー
このメタデータは、メモリーに常駐し、データの合計に比例します。一部のコンポーネントは、メモリーの合計サイズに比例して大きくなります。データベースは読み取りまたはアンチエントロピー・リペア用のレプリカを収集し、ヒープ・メモリー内でレプリカを比較します。
データベースに書き込まれたデータは、最初にヒープ・メモリー内のmemtableに格納されます。memtableは、ディスクのSSTableにフラッシュされます。
注: データベースはオフヒープ・メモリーを次のように使用します。
- ページのキャッシュ。データベースは、ディスク上のファイルを読み取ったときに、追加メモリーをページのキャッシュとして利用します。
- ブルーム・フィルターと圧縮オフセット・マップはオフヒープに置かれます。
- データベースは、キャッシュされた行をネイティブのメモリー、Javaヒープ外に格納します。これにより、JVMヒープに対する要求がともに小さくなります。これは、JVMガーベージ・コレクションのパフォーマンスにとって最適なヒープ・サイズを保つのに役立ちます。
DSEの高度な機能によるメモリーの使用
DataStax Enterpriseの高度な機能では、ワークロード・タイプが有効になっているノード上で追加のメモリーを使用します。
Search
DSE Searchは、データベース専用ノードよりもメモリー要件が大きくなります。ほとんどの検索デプロイは、24~32 GB間のヒープでG1 GCを使用して実行されます。追加メモリーを使用する場合の考慮事項は次のとおりです。
- Solrは、ディスク上のインデックス・セグメントにフラッシュされるまでRAMにインデックス付きデータを格納します。ヒープ・サイズの設定時にSolrインデックスに必要なメモリー量を決定してください。充分な空きRAMを確保します。十分な空きRAMとは、合計RAMからDSEヒープ・サイズを差し引き、さらに、DSEオフヒープ・オブジェクト・サイズを差し引いた容量です。
- 複数の同時インデックスがある場合、ヒープが大きくてもGCスラッシングの原因となる場合があります。
- ページ・キャッシュ・サイズよりインデックスが大きい場合、検索クエリーのパフォーマンスに影響を与える可能性があります。検索クエリーのパフォーマンスを下げないように、インデックス・サイズはページ・キャッシュ・サイズを超えないようにしてください。
ヒント: 「DSE Searchのパフォーマンス調整と監視」を参照してください。
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以上のシステムで実行されます。