Solr HTTP要求のトレース

クエリーに関するトラブルシューティングのヒント:Solr HTTP要求のトレース

DataStax Enterpriseヘルプ・センターでは、トラブルシューティング情報も提供しています。

クエリーのデバッグやトラブルシューティングを行う際には、以下のいずれかの方法でSolr HTTP要求をトレースすることができます。
  • 確率的トレースを有効にする。
  • 明示的なcassandra.trace=true要求パラメーターをHTTPクエリーに渡す。

Joinクエリーの使用例を実行した後で、cassandra.traceパラメーターをHTTP要求に追加して、Joinクエリーをトレースすることができます。

http://localhost:8983/solr/internet.songs/select/?q={!join+from=song+to=id+fromIndex=internet.lyrics+force=true}words:love&indent=true&wt=json&cassandra.trace=true

Solrの応答には、その要求のトレーシング・セッションの一意のセッションIDであるcassandra.trace.session値が含まれています。

{
  "cassandra.trace.session":"3e503490-bdb9-11e3-860f-73ded3cb6170",
  "responseHeader":{
    "status":0,
    "QTime":1,
    "params":{
      "indent":"true",
      "q":"{!join from=song to=id fromIndex=internet.lyrics force=true}words:love",
      "wt":"json",
      "cassandra.trace":"true"}},
  "response":{"numFound":2,"start":0,"docs":[
      {
        "id":"8a172618-b121-4136-bb10-f665cfc469eb",
        "title":"Internet Love Song",
        "artist":"John Cedrick"},
      {
        "id":"a3e64f8f-bd44-4f28-b8d9-6938726e34d4",
        "title":"Dangerous",
        "artist":"Big Data"}]
}}

トレース情報を確認するには、セッションIDを使用してsystem_traces.eventsをクエリーすることで出力をフィルター処理します。

cqlsh> select * from system_traces.events where session_id = 3e503490-bdb9-11e3-860f-73ded3cb6170;

 session_id  | activity                                                                  | source_elapsed  
-------------+---------------------------------------------------------------------------+----------------
 3e503490...|          Parsing SELECT * from "internet"."songs" WHERE "id" = 8a172618...|           2607 
 3e503490...|                                                       Preparing statement |           3943 
 3e503490...|                                 Executing single-partition query on songs |           4246 
 3e503490...|                                              Acquiring sstable references |           4261 
 3e503490...|                                               Merging memtable tombstones |           4305 
 3e503490...|                                               Key cache hit for sstable 1 |           4388 
 3e503490...|                         Seeking to partition indexed section in data file |           4399 
 3e503490...| Skipped 0/1 non-slice-intersecting sstables, included 0 due to tombstones |           4873 
 3e503490...|                                Merging data from memtables and 1 sstables |           4954 
 3e503490...|                                        Read 1 live and 0 tombstoned cells |           5162 
 3e503490...|        Parsing SELECT * from "internet"."songs" WHERE "id" = a3e64f8f...  |           6160 
 3e503490...|                                                       Preparing statement |           7424
 ...

event_id、ノードIPアドレス、スレッドIDは、例示の関係上、ページ内に収めるためにこの出力から除外されています。

複数のノードにおける分散クエリーの場合、すべてのノードで同じトレーシング・セッションIDが使用されます。このため、分散クエリーに参加しているすべてのノードでデータベース操作を相互に対応付けることが可能になります。