インデックス作成のパフォーマンスの構成と調整
インデックス作成のスループットを最大限に高めるようにDSE Searchを構成し、調整します。
cassandra.yaml
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/cassandra.yaml |
tarボール・インストール | installation_location/resources/cassandra/conf/cassandra.yaml |
dse.yaml
dse.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/dse.yaml |
tarボール・インストール | installation_location/resources/dse/conf/dse.yaml |
- ニア・リアルタイム(NRT)インデックス作成は、Apache Solr™とApache Lucene®のデフォルトのインデックス作成モードです。
- ライブ・インデックス作成はリアルタイム(RT)インデックス作成とも呼ばれ、Lucene RAMバッファーに対する直接検索をサポートしており、より頻繁で安価なソフト・コミットが可能であり、新たにインデックスが作成されたデータをすばやく認識できるようになります。ただし、RTインデックス作成では、他の同等のNRT設定よりも大きいRAMバッファーとメモリー使用量が必要になります。
使用しているCPUの数
調整する前に、使用している物理CPUの数を特定してください。JVMは仮想CPUのハイパースレッディングをサポートしていません。
インデックス作成のパフォーマンスの調整
デフォルトのmergeScheduler設定は、自動的に設定されます。DSE 6.0以降では、これらの設定を調整しないでください。以前のバージョンでは、デフォルト設定が異なり、調整が必要な場合がありました。
RAMバッファーのサイズ変更
- ram_buffer_heap_space_in_mb: 1024
- ram_buffer_offheap_space_in_mb: 1024
NRTはオフヒープを使用しないため、RTにのみ適用されます。
JMX MBeanのパス: com.datastax.bdp.metrics.search.RamBufferSize
TPCコアの調整
DSE Searchワークロードは、書き込み(インデックス作成)用のハイパースレッディングの恩恵を受けません。両方のモード(NRTおよびRT)のインデックス作成スループットのDSE Searchを最適化するには、cassandra.yaml のtpc_coresをデフォルトから物理CPUの数に変更します。この設定は、検索ノードでのみ変更してください。この変更により、検索以外のワークロードのスループットが低下する可能性があるためです。
AIOの無効化
- 非同期I/O(AIO)を無効にします。
file_cache_size_in_mb
を512
に設定します。
デフォルトでは、DataStax Enterprise 6.0以降では、AIOと、SSTableデータのOSページ・キャッシュを置き換えるカスタム・チャンク・キャッシュを使用します。このチャンク・キャッシュは、マシンで使用可能なメモリーの3分の1、または明示的に構成されたJVM MaxDirectMemorySize
の半分を使用するように構成されています。DataStax Enterpriseの検索インデックスの更新はすべて、最初にインデックス作成されているパーティションまたは行に対してread-before-writeを実行します。この機能は、DataStax Enterpriseがコア・データベースの内部読み取りパスを使用し、AIO/チャンク・キャッシュ装置が使用されることを意味します。
-Ddse.io.aio.enabled=false
をDataStax Enterpriseに渡します。実行されると、SSTableとLuceneセグメント、およびその他のマイナーなオフヒープ要素がOSページ・キャッシュに常駐し、カーネルによって管理されます。AIOを無効にすると、system.log
にWARN
エントリーが生成されます。例を次に示します。WARN [main] 2019-05-01 21:37:16,563 StartupChecks.java:632
- Asynchronous I/O has been manually disabled (through the'dse.io.aio.enabled'
system property). This may result in subpar performance.
データセットが利用可能なメモリーよりも大きい場合、AIOを無効にすると潜在的にマイナスの影響として、DataStax Enterpriseがディスクにアクセスする際の読み取りレイテンシーがかなり長くなる可能性があります。
バック・プレッシャー
dse.yamlのback_pressure_threshold_per_coreは、インデックスの再構築/インデックス再作成にのみ影響します。以前のバージョンからDSE 6.0にアップグレードした場合、1024の新しいデフォルト値を使用するようにしてください。
NRTのインデックス再作成の調整
DSE Searchは、メモリー不足を回避し安定したパフォーマンスを維持するため、バック・プレッシャー・メカニズムによるマルチスレッドの非同期インデックス作成機能を備えています。マルチスレッドのインデックス作成により、複数のCPUコアを持つマシンのパフォーマンスが向上します。
インデックス再作成のみの場合は、IndexPool MBeanを使用することで、運用上の可視性が得られ、JMXを使用した調整が可能です。
- デフォルトで10秒(10000 ms)に設定されているソフト・コミット時間を増やします。たとえば、時間を60秒に増やしてから、検索インデックスを再読み込みします。
ALTER SEARCH INDEX CONFIG ON demo.health_data SET autoCommitTime = 60000;
保留中の変更をアクティブにするには:RELOAD SEARCH INDEX ON demo.health_data;
RTのインデックス作成の調整
- ライブ・インデックス作成(RTとも呼ばれます)を有効にするには:
ALTER SEARCH INDEX CONFIG ON demo.health_data SET realtime = true;
- ライブ・インデックス作成を構成するには、autoCommitTimeを100~1000 msの値に設定します。
ALTER SEARCH INDEX CONFIG ON demo.health_data SET autoCommitTime = 1000;
100~1000 msの調整値でテストします。この範囲で最適な設定は、ハードウェアと環境によって異なります。ライブ・インデックス作成(RT)の場合、この更新間隔の上限は1000 msです。1000 msを超える値は認識されません。
- 検索ノードに少なくとも14 GBのヒープがあることを確認してください。
- ヒープを変更する場合は、DataStax Enterpriseを再起動して、変更されたヒープ・サイズでライブ・インデックス作成を使用します。