マルチスレッド・インデックス作成の構成

マルチスレッドの非同期インデックス作成により、複数のCPUコアを持つマシンでパフォーマンスが向上します。

DSE Searchには、使用可能なメモリーの飽和を防いで安定したパフォーマンスを維持するために、バック・プレッシャー・メカニズムによるマルチスレッドの非同期インデックス作成機能が装備されています。マルチスレッドのインデックス作成により、複数のCPUコアを持つマシンでパフォーマンスが向上します。インデックスはすべてCPUごとのコア・インデックス作成スレッド・プールに内部でディスパッチされ、非同期で実行されます。

このマルチスレッド・インデックス作成を実装すると、同時実行制御と並列処理が向上して、インデックス作成操作が実際に実行される前に、インデックス作成要求に対する応答を返すことができるようになります。

DSE Searchには、IndexPool JMX MBeanによる高度なJMXベースの構成可能性と可視性も備えられています。

dse.yamlファイルの場所は、インストールのタイプによって異なります。
Installer-Services /etc/dse/dse.yaml
パッケージ・インストール /etc/dse/dse.yaml
Installer-No Services install_location/resources/dse/conf/dse.yaml
tarボール・インストール install_location/resources/dse/conf/dse.yaml

手順

  1. dse.yamlファイルで、max_solr_concurrency_per_coreオプションを使用してSolrコアあたりのインデックス作成スレッド数を定義します。最適なパフォーマンスを実現するには、この値を、Solrコア数で除算した使用可能なCPUコア数に割り当てます。たとえば、CPUコア数が12でSolrコア数が3の場合、推奨値は4になります。

    1に設定すると、DSE Searchではレガシーの同期インデックス作成実装が使用されます。

  2. dse.yamlファイルで、back_pressure_threshold_per_coreオプションを使用してバック・プレッシャーをアクティブにする前に、Solrコアあたりのバッファー非同期インデックスの更新数を定義します。デフォルト値は、使用可能なCPUコア数の1000倍です。
    バック・プレッシャーのしきい値に到達すると、新たに受信した要求が、要求1件あたりでwrite_request_timeout_in_msの最大80%の一時停止にスロットルされます。cassandra.yamlファイルのwrite_request_timeout_in_msは、コーディネーターに求められる書き込みが完了するまでの待機時間を定義します。
  3. 各Solrコアのインデックス作成パフォーマンスを監視するには、com.datastax.bdp:type=search,index=solr_core,name=IndexPool MBeanの以下のJMX属性を使用してください。
    • TotalQueueSize:バッファ非同期インデックスの総更新数。
    • Throughput:1秒間で実行されるインデックス更新回数の現在の1分あたりの回数。
    • BackPressurePauseNanos:要求1件あたりで適用されるバック・プレッシャー一時停止の現在の1分平均。