すべてのプロダクト
Search
ドキュメントセンター

PolarDB:PolarSearch 性能ベンチマーク

最終更新日:Apr 25, 2026

このドキュメントでは、OpenSearch Benchmark ツールを使用して PolarSearch の性能ベンチマークを実行する方法について説明します。このガイドを使用して独自のテストを実施し、実際のワークロード下で異なるプロダクトの検索およびデータインジェスト性能を評価できます。

テストツール

OpenSearch Benchmark (OSB) は OpenSearch プロジェクトが提供するオープンソースの検索エンジン向けベンチマークフレームワークであり、かつては Elasticsearch Rally として知られていました。標準化された業界ワークロードを含み、Elasticsearch/OpenSearch REST API と互換性のある任意の検索エンジンに対して一貫性があり再現可能な性能ベンチマークをサポートするため、プロダクト間の比較に最適です。

テスト環境

  • テストツール:OpenSearch Benchmark 2.1.0

  • セットアップ:ECS インスタンスと PolarSearch クラスターは、同一リージョン、同一アベイラビリティーゾーン、同一 VPC ネットワーク内に配置されている必要があります。

  • ECS インスタンス

    • インスタンスタイプ:ecs.c9i.8xlarge(32 コア、128 GiB)

    • オペレーティングシステム:Ubuntu 22.04

    • Python バージョン:3.10 以上

  • PolarSearch クラスター

    • ノードタイプ:8 コア、32 GB

    • ノード数:2

    • パラメーター構成:すべてのテストは、クラスターパラメーターを一切調整せずにデフォルトのすぐに使える構成を使用します。

プロダクトとバージョン

プロダクト

PolarSearch バージョン

ノードタイプ

ノード数

PolarSearch

3.0

8 コア、32 GB

2

PolarSearch

1.0

8 コア、32 GB

2

ワークロード

ワークロード

説明

テスト操作

HTTP logs

1998 年 FIFA ワールドカップの Web サーバー実アクセスログに基づいています。データセットには約 2 億 4,700 万件のログレコードが含まれます。

index-append データインジェスト、完全一致検索、時間範囲クエリ、集約

NYC taxis

2015 年のニューヨーク市タクシーの乗車データに基づいています。

index-append データインジェスト、完全一致検索、時間範囲クエリ、地理的距離クエリ、集約

Geonames

GeoNames 地理データベースに基づいています。データセットは 2017 年 4 月のグローバル地名辞書(allCountries)エクスポートを使用しており、世界中の約 1,140 万件のポイントオブインタレスト(POI)レコードを含みます。

完全一致およびフレーズ(正確/全文)検索、集約、decay_geo_gauss_function_score、painless_static スクリプトスコアリング、desc_sort_population ソートクエリ

テストシナリオ

インデックス作成性能テスト

  • このテストでは、データセット全体をクラスターにバッチ書き込みし、同時実行インデックス作成クライアント数(bulk_indexing_clients)を変更しながら各機能バージョンの書き込みスループットを測定します。

  • テストでは append-no-conflicts-index-only テストプロシージャを使用します。このプロシージャはインデックスを作成し、検索操作を実行せずにデータをインジェストします。各テスト実行は空のインデックスから開始されます。

  • 同時実行インデックス作成クライアント数は、1、2、4、8、16、32 の順にテストされます。

検索性能テスト

  • データインジェスト後、--include-tasks パラメーターを使用して検索タスクを指定し、データを再インポートせずに既存データに対して検索テストを実行します。

  • テストは、同時実行検索クライアント数(search_clients)を 1、2、4、8、16、32 の順に変更しながら実行され、target_throughput は 0(フルスピードストレステストモード)に設定されます。

OpenSearch Benchmark のインストール

説明

OpenSearch Benchmark には Python 3.8 以上が必要です。

  1. 次のコマンドを実行して OpenSearch Benchmark をインストールします。

    pip install opensearch-benchmark
  2. 次のコマンドを実行してインストールを確認します。

    opensearch-benchmark --version

テスト手順

前提条件

ご利用の PolarSearch クラスターのエンドポイント、ユーザー名、パスワードを取得し、ネットワーク接続を確認します。

curl -u <user>:<password> http://<endpoint>/_cluster/health?pretty

応答ステータスの説明:

  • "status": "green":クラスターは正常です。

  • "status": "yellow":すべてのプライマリシャードは割り当てられていますが、一部のレプリカシャードが未割り当てです(例:ノードがオフライン)。クラスターは読み取りおよび書き込みリクエストを処理できますが、高可用性が低下しています。次のコマンドを使用して調査してください。

    # シャード割り当て状況を確認
    curl -u <user>:<password> -XGET "http://<endpoint>/_cat/shards?v"
    # 未割り当てシャードの詳細を表示
    curl -u <user>:<password> -XGET "http://<endpoint>/_allocation/explain"
  • "status": "red":少なくとも 1 つのプライマリシャードが未割り当てのため、一部のデータが利用できません。クラスターがこの状態の場合は性能テストを実行しないでください。

性能テストの実行

次のコマンドを実行して性能テストを開始します。

opensearch-benchmark run \
    --workload="<workload>" \
    --client-options="basic_auth_user:<user>,basic_auth_password:<password>,verify_certs:false" \
    --target-hosts="<endpoint>" \
    --pipeline=benchmark-only \
    --results-file="path/to/result_file.md" \
    --kill-running-processes \
    --workload-params="number_of_replicas:<num_replicas>,number_of_shards:<num_shards>,bulk_indexing_clients:<num_indexing_clients>,search_clients:<num_search_clients>,target_throughput:0"
    
    
# オプションパラメーター
#   --test-procedure="<test_procedure_name>"
#   --include-tasks="<task_names>"

一般的なコマンドラインパラメーター:

パラメーター

説明

--workload

テストワークロードの名前(例:http_logs または nyc_taxis)。

--test-procedure

テストプロシージャの名前。書き込み専用テストの場合は append-no-conflicts-index-only を使用します。検索テストの場合は append-no-conflicts を使用します。これは検索ジョブを含む完全なプロシージャです。--include-tasks と組み合わせて検索部分のみを実行できます。

説明

opensearch-benchmark info --workload=<workload_name> コマンドを実行すると、利用可能なテストプロシージャを確認できます。

--include-tasks

指定した場合、リストされたタスクのみを実行します。インデックスの削除・作成・データインジェストのステップをスキップし、既存データに対して検索テストを実行できます。

--client-options

クラスターへの認証情報。

説明

verify_certs:false は SSL 証明書の検証をスキップすることを意味します。

--target-hosts

テスト対象クラスターのエンドポイント。

--pipeline=benchmark-only

OpenSearch Benchmark に外部の PolarSearch クラスターを使用するよう指示します。

--results-file

テスト結果の出力パス。結果は Markdown フォーマットで保存されます。

--kill-running-processes

以前の実行で残っている OpenSearch Benchmark プロセスを自動的に終了します。

--workload-params

ワークロードの Jinja2 テンプレートに実行時パラメーターを注入するために使用されるキーと値のペアのカンマ区切りリストで、デフォルト値を上書きします。

ワークロードパラメーター:

パラメーター

説明

number_of_replicas

インデックスのレプリカシャード数。

number_of_shards

インデックスのプライマリシャード数。

bulk_indexing_clients

同時実行インデックス作成クライアント数。

search_clients

同時実行検索クライアント数。検索テスト時に適用されます。

target_throughput:0

レート制限を無効にし、テストをフルスピードで実行してクラスターの最大検索スループットを測定できるようにします。

テスト結果

各テスト完了後、OpenSearch Benchmark はコンソールに結果の概要を出力し、--results-file パラメーターで指定されたファイルに詳細な結果を書き込みます。

メトリック

説明

平均スループット

テスト中の平均スループットで、単位は ops/s(1 秒あたりの操作数)です。

target_throughput=0 のフルスピードストレステストモードでは、この値が現在の同時実行数におけるクラスターの実際の最大処理能力を直接反映し、検索エンジン性能を測定するための中核的なメトリックとなります。値が高いほど単位時間あたりにより多くのリクエストを処理でき、性能が優れていることを示します。

p50 レイテンシー

50 パーセンタイルレイテンシー(中央値)。すべてのリクエストの半数がこの値より速く完了し、典型的なリクエストレイテンシーを反映します。

p90 / p99 レイテンシー

90 パーセンタイルおよび 99 パーセンタイルレイテンシー。これらの値はロングテールリクエストのレイテンシーを反映し、サービス安定性の重要な指標です。値が低いほど高負荷時のレイテンシー分散が小さくなります。

サービス時間

リクエスト送信から応答受信までの実際の処理時間で、キューイング時間を除きます。クラスターの純粋な処理時間を反映します。このメトリックにも p50、p90、p99 などのパーセンタイル値が含まれます。

エラー率

テスト中に失敗したリクエストの割合。有効なテスト結果ではエラー率が 0 % である必要があります。0 以外の値は、現在の負荷下でクラスターがエラー(サーキットブレーカーやタイムアウトなど)を発生させており、そのテスト実行のデータが信頼できないことを示します。

詳細なテスト結果については、「PolarSearch 1.0 性能テスト結果」および「PolarSearch 3.0 性能テスト結果」をご参照ください。