遅いクエリーの収集

DataStax Enterprise Performance Serviceを使用して、低パフォーマンスのクエリーを簡単に見つけて調整するために、クラスター上の遅いクエリーを特定する手順。

node_slow_logテーブルは、ノード上の遅いクエリーに関する情報を収集し、時間のかかるCQL文のクエリー情報を保持して、低パフォーマンスのクエリーを見つけて調整するためにクラスター上の遅いクエリーを特定しやすくします。遅いクエリー・ログの収集はデフォルトで有効になっています。

保留になっているnode_slow_logへの挿入は、このサービスが無効になった後でも処理されます。このサービスは有効にも無効にもできます。サービスが無効になった後、指定されたしきい値よりも時間のかかるクエリーのロギングは停止されます。ただし、ロギングの無効化によって、保留中の書き込みキューはフラッシュされず、バックグラウンドのスレッドが最終的にすべてを処理します。

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ファイルを編集し、cql_slow_log_optionsパラメーターのコメントを解除して、CQLのスロー・ログ設定の値を定義します。
      cql_slow_log_options 
      cql_slow_log_options:
      enabled:true
      threshold: 2000.0
      minimum_samples: 100
      ttl_seconds:259200
      指定した時間より長くかかったSolr用の分散サブクエリー(個別シャードでのクエリー実行)を報告します。遅いクエリーの収集」を参照してください。
      enabled
      遅いクエリーのログ・エントリーを有効(true)または無効(false)にします。デフォルト:true
      threshold 
      しきい値を定義します(ミリ秒単位でまたはパーセンタイルとして)。デフォルト: 2000
      • 1より大きい値は時間で表示され、指定したミリ秒数より長くかかったクエリーは記録されます。
      • 0〜1の値はパーセンタイルとして表示され、このパーセンタイルを超えるクエリーは記録されます。
      minimum_samples 
      パーセンタイル・フィルターをアクティブ化する前に最初のクエリー番号を定義します。デフォルト: 100
      ttl_seconds 
      時間をミリ秒単位で定義し、遅いクエリーのログ・エントリーを保存します。デフォルト: 259200
    • 2000ミリ秒のしきい値を超える遅いクエリーに関する情報の収集を一時的に無効にするには:
      $ dsetool perf cqlslowlog disable
      
    • 最も遅いクエリーの5%に関する情報を収集するためのしきい値を一時的に変更するには:
      $ dsetool perf cqlslowlog 95.0
      この一時的なしきい値設定を使用して情報を収集した後、スクリプトを実行し、このしきい値を使用して、以前に設定されたしきい値よりも時間のかかるクエリーを表示できます。例:
      $ cqlsh 
      cqlsh> use dse_perf; 
      cqlsh:dse_perf> select * from node_slow_log;
      ...
  2. CQL copyコマンドを使用して、遅いクエリーをエクスポートできます。
    cqlsh:dse_perf> COPY node_slow_log ( date, commands, duration ) TO 'slow_queries.csv' WITH HEADER = true;