パフォーマンス統計リファレンス

このページでは、Solrが公開している統計情報の一部について説明します。

メトリクスを取得するには2つの方法があります。1つ目は、メトリクスAPIを使用する方法です。2つ目は、JMXを有効にして、MBeanリクエストハンドラまたはJConsoleなどの外部ツールからメトリクスを取得する方法です。以下の説明では、メトリクスAPIを使用したメトリクスの取得に焦点を当てていますが、MBeanリクエストハンドラまたは外部ツールを使用する場合でも、メトリクス名は同じです。

これらの統計はコアごとです。SolrCloudモードで実行している場合、これらの統計は個々のレプリカのパフォーマンスに関連します。

リクエストハンドラ統計

更新リクエストハンドラ

更新リクエストハンドラは、Solrにデータを送信するためのエンドポイントです。更新リクエストがいくつ発行されているか、実行速度、およびリクエストに関するその他の貴重な情報を確認できます。

レジストリとパス: solr.<core>:UPDATE./update

https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE などのAPIリクエストを使用して、更新リクエストハンドラの統計情報をリクエストできます。

検索リクエストハンドラ

検索クエリの件数、応答時間などを測定および追跡するのに役立ちます。「select」ハンドラを使用していない場合は、パスを適切に変更する必要があります。同様に、「sql」ハンドラまたは「export」ハンドラ、リアルタイムハンドラ「get」、またはその他のハンドラを使用している場合も、同様の統計情報を見つけることができます。

レジストリとパスsolr.<core>:QUERY./select

https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=QUERY./select などのAPIリクエストを使用して、 /select リクエストハンドラの統計情報をリクエストできます。

リクエストハンドラでよく使用される統計

すべての更新および検索リクエストハンドラは、次の統計情報を提供します。

リクエスト時間

リクエスト時間を取得するには、具体的には、次のようなAPIリクエストを送信できます。

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE./update.requestTimes

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=QUERY./select.requestTimes

属性 説明

15minRate

過去15分間に受信した1秒あたりのリクエスト数。

5minRate

過去5分間に受信した1秒あたりのリクエスト数。

p75_ms

75パーセンタイルに属するリクエストの、リクエスト処理時間。たとえば、100個のリクエストを受信した場合、75番目に速いリクエスト時間がこの統計によって報告されます。

p95_ms

95パーセンタイルに属するリクエストの、ミリ秒単位のリクエスト処理時間。たとえば、100個のリクエストを受信した場合、95番目に速いリクエスト時間がこの統計に報告されます。

p999_ms

99.9パーセンタイルに属するリクエストの、ミリ秒単位のリクエスト処理時間。たとえば、1000個のリクエストを受信した場合、999番目に速いリクエスト時間がこの統計に報告されます。

p99_ms

99パーセンタイルに属するリクエストの、ミリ秒単位のリクエスト処理時間。たとえば、100個のリクエストを受信した場合、99番目に速いリクエスト時間がこの統計に報告されます。

count

Solrコアが最初に作成されてからのリクエストの総数。

median_ms

すべてのリクエスト処理時間の中央値。

meanRate

Solrコアが最初に作成されてから受信した、1秒あたりの平均リクエスト数。

エラーとその他の時間

エラーやタイムアウトなどの他のタイプのデータも提供されます。これらは、異なるメトリック名で利用できます。例えば

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE./update.errors

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=QUERY./select.errors

以下の表は、リクエストするメトリック名と属性を示しています

メトリック名 説明

QUERY./select.errors UPDATE./update.errors

ハンドラで発生したエラーの数。エラー数に加えて、平均、1分、5分、15分のレートも利用可能です。

QUERY./select.clientErrors UPDATE./update.clientErrors

クライアントがリクエストを行う際に発生した構文エラーまたは解析エラーの数。エラー数に加えて、平均、1分、5分、15分のレートも利用可能です。

QUERY./select.requests UPDATE./update.requests

このハンドラが受信したリクエストの数。

QUERY./select.serverErrors UPDATE./update.serverErrors

リクエストの実行中にサーバーがスローしたエラーの数。エラー数に加えて、平均、1分、5分、15分のレートも利用可能です。

QUERY./select.timeouts UPDATE./update.timeouts

部分的な結果で受信したレスポンスの数。タイムアウトイベント数に加えて、平均、1分、5分、15分のレートも利用可能です。

QUERY./select.totalTime UPDATE./update.totalTime

Solrプロセスが開始されてからのすべてのリクエスト処理時間の合計(ナノ秒単位)。

QUERY./select.handlerStart UPDATE./update.handlerStart

ハンドラが登録されたエポック時間。

内部リクエストの区別

SolrCloudでの大規模コレクションの単一リクエストの処理には、他のレプリカ(多くの場合、他のノード上)への追加リクエストを行う必要があります。内部リクエストは表面上は非常によく似ていますが(同じハンドラ)、包括的なタスクの一部を実行しています。これらのリクエストを区別することは非常に重要です! Solrは、リクエストが他のリクエストに寄与している場合、異なるハンドラ名を使用してこれらのハンドラのメトリックを追跡します。

  • クエリ:/selectクエリの内部リクエストは、/select[shard]として追跡されます。技術的には、これはSearchHandlerとそのサブクラスで発生します。

  • (将来的には、より多くの計測が可能になる可能性があります)

SolrのPrometheusエクスポーター設定は、ハンドラのこのサフィックスを「internal」という名前のラベルに抽出します。 Grafanaやその他のメトリックツールを設定する際は、分析対象に応じて、これらのメトリックをフィルタリングして含めるか除外してください。

更新ハンドラ

このセクションには、追加の総数と、Solrコアに対して実行されたコミットの数が記載されています。

レジストリとパス: solr.<core>:UPDATE.updateHandler

https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE.updateHandlerなどのAPIリクエストを使用して、以下の表に示されているすべての更新ハンドラの統計情報を取得できます。

以下では、取得できる具体的な統計情報について説明します。

属性 説明

UPDATE.updateHandler.adds

最後のコミット以降の「追加」リクエストの総数。

UPDATE.updateHandler.autoCommitMaxTime

2つの自動コミット実行間の最大時間。

UPDATE.updateHandler.autoCommits

実行された自動コミットの総数。

UPDATE.updateHandler.commits

実行されたコミットの総数。

コミット数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.cumulativeAdds

ライフタイムにわたって実行された「有効な」追加の数。「追加」コマンドが実行されるとカウンターが増加し、「ロールバック」が実行されると減少します。

追加数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.cumulativeDeletesById

ライフタイムにわたってIDで実行されたドキュメント削除の数。「削除」コマンドが実行されるとカウンターが増加し、「ロールバック」が実行されると減少します。

削除数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.cumulativeDeletesByQuery

ライフタイムにわたってクエリによって実行されたドキュメント削除の数。「削除」コマンドが実行されるとカウンターが増加し、「ロールバック」が実行されると減少します。

削除数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.cumulativeErrors

ライフタイムにわたってドキュメントの追加/削除アクションを実行中に受信したエラーメッセージの数。

エラー数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.deletesById

現在コミットされていないIDによる削除。

UPDATE.updateHandler.deletesByQuery

現在コミットされていないクエリによる削除。

UPDATE.updateHandler.docsPending

コミット待ちのドキュメントの数。

UPDATE.updateHandler.errors

コアのライフタイムにわたってドキュメントの追加/削除/コミット/ロールバックアクションを実行中に受信したエラーメッセージの数。

UPDATE.updateHandler.expungeDeletes

削除を消去して発行されたコミットコマンドの数。

削除の消去数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.merges

発生したインデックスマージの数。

マージ数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.optimizes

発行された明示的な最適化コマンドの数。

最適化数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.rollbacks

実行されたロールバックの数。

ロールバック数に加えて、平均、1分、5分、15分のレートも利用可能です。

UPDATE.updateHandler.softAutoCommitMaxTime

2つのソフト自動コミット間の最大ドキュメント「追加」数。

UPDATE.updateHandler.softAutoCommits

実行されたソフトコミットの数。

キャッシュ統計

ドキュメントキャッシュ

このキャッシュは、Luceneドキュメントオブジェクト(各ドキュメントの格納フィールド)を保持します。 Luceneの内部ドキュメントIDは一時的なため、このキャッシュは自動ウォーミングできません。

レジストリとパス: solr.<core>:CACHE.searcher.documentCache

https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.documentCacheなどのAPIリクエストを使用して、以下の表に示されている統計情報を取得できます。

クエリ結果キャッシュ

このキャッシュは、以前の検索結果(クエリ、ソート、およびリクエストされたドキュメントの範囲に基づくドキュメントIDの順序付きリスト)を保持します。

レジストリとパス: solr.<core>:CACHE.searcher.queryResultCache

https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.queryResultCacheなどのAPIリクエストを使用して、以下の表に示されている統計情報を取得できます。

フィルターキャッシュ

このキャッシュは、クエリに一致するすべてのドキュメントの順序付けられていないセットのフィルターに使用されます。

レジストリとパス: solr.<core>:CACHE.searcher.filterCache

https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.filterCacheなどのAPIリクエストを使用して、以下の表に示されている統計情報を取得できます。

キャッシュの統計

上記の各キャッシュについて、以下の統計情報が利用可能です。

属性 説明

cumulative_evictions

このノードが実行されてからのすべてのキャッシュにおけるキャッシュエビクションの数。

cumulative_hitratio

このノードが実行されてからのすべてのキャッシュにおける、キャッシュヒットとルックアップの比率。

cumulative_hits

このノードが実行されてからのすべてのキャッシュにおけるキャッシュヒットの数。

cumulative_inserts

このノードが実行されてからのすべてのキャッシュにおけるキャッシュ挿入の数。

cumulative_lookups

このノードが実行されてからのすべてのキャッシュにおけるキャッシュルックアップの数。

evictions

現在のインデックスサーチャーのキャッシュエビクションの数。

hitratio

現在のインデックスサーチャーのキャッシュヒットとルックアップの比率。

hits

現在のインデックスサーチャーのヒット数。

inserts

キャッシュへの挿入数。

lookups

キャッシュに対するルックアップの数。

size

その特定のインスタンスにおけるキャッシュ内のエントリの数。

warmupTime

登録済みインデックスサーチャーのウォームアップ時間(ミリ秒)。この時間は、キャッシュの「自動ウォーミング」に考慮されます。

ヒープ使用量によるエビクションが有効になっている場合、クエリ結果キャッシュについて以下の追加の統計情報が利用可能です。

属性 説明

maxRamMB

キャッシュが使用できる最大ヒープ。これを超えるとキーがエビクトされます。

ramBytesUsed

その特定のインスタンスにおけるキャッシュの実際のヒープ使用量。

evictionsRamUsage

ヒープ使用量がmaxRamMBを超えたために、現在のインデックスサーチャーのキャッシュエビクションの数。

Solrキャッシュの詳細については、キャッシュとクエリのウォーミングのセクションを参照してください。