LoginSignup
0
0

More than 3 years have passed since last update.

Couchbaseベンチマークツールpillowfight解説

Last updated at Posted at 2021-02-15

はじめに

データベースを運用するに当たって、ベンチマークテストは避けて通れない要素です。
汎用的なものから、データベース固有のものまで、ベンチマークテストを行うための各種のツールが提供されています(ベンチマークツールという呼び方の他、ストレスツール、ワークロードジェネレーター等とも呼ばれます)。

本稿では、Couchbase Serverのオープンソースツールであるpillowfightを紹介します。

その他のNoSQL用ツール

ちなみに、他のNoSQLについても、それぞれ独自のツールが存在しています。

MongoDB

MONGO-PERF

Cassandra

Cassandra Stress

pillowfightの使い方

インストール

pillowfightは、Couchbase C SDK libcouchbaseの一部として提供されます。

CentOS/RHEL

$ sudo yum check-update
$ sudo yum search libcouchbase
$ sudo yum install libcouchbase3 libcouchbase-devel libcouchbase3-tools libcouchbase3-libevent

Mac

$ brew update
$ brew install libcouchbase

Windows

SDKリリースノートから、バイナリをダウンロード・解凍して利用します。

その他のOSについてもドキュメントを参照してください。

オプション解説

省略 非省略 説明
-B --batch-size バッチ処理の数 [デフォルト=100]
-I --num-items アイテムの数 [デフォルト=1000]
-p --key-prefix キー接頭辞の指定 [デフォルト=' ' ]
-t --num-threads スレッドの数 [デフォルト=1]
-R --random-body ドキュメント本文をランダム化する [デフォルト=FALSE]
-r --set-pct ミューテーション操作の割合 [デフォルト= 33]
-n --no-population ポピュレーション(入力)をスキップする [デフォルト= FALSE]
-m --min-size 最小ペイロードサイズ [デフォルト= 50]
-M --max-size 最大ペイロードサイズ [デフォルト= 5120]
-E --pause-at-end 実行の終了時に一時停止する(ユーザー入力まで接続を保持する) [デフォルト= FALSE]
-c --num-cycles 終了するまで実行されるサイクル数。-1に設定すると、無限にループする [デフォルト= -1 ]
--sequential (ランダムアクセスでなく)シーケンシャルアクセスを使用 [デフォルト= FALSE]
--start-at シーケンシャルアクセスの場合に、最初の値を設定[デフォルト= 0]
--rate-limit 1秒あたり操作の制限を設定(スレッド単位) [デフォルト= 0]
--docs ロードするユーザードキュメント(--min-s-izeと--max-sizeをオーバーライド)[デフォルト=]
-J --json (bytesではなく)JSONデータの書き込みを有効にする [デフォルト= FALSE]
--subdoc fulldoc操作の代わりにsubdoc操作を使用[デフォルト= FALSE]
--noop ドキュメント操作の代わりにNOOPを使用[デフォルト= FALSE]
--pathcount コマンドあたりのサブドキュメントパスの数[デフォルト= 1]
--populate-only ドキュメントのポピュレーション(入力)のみを実施し、終了する[デフォルト= FALSE]
-e --expiry アイテムのTTLを設定 [デフォルト= 0]
--collection コレクションの(スコープを含む)フルパス (複数指定可能) [デフォルト=]
-d --durability 耐久レベル [デフォルト='none']
--persist-to アイテムを指定した数のノードに永続化するまでブロックする (-1の場合、マスター+レプリカ) [デフォルト= 0]
--replicate-to アイテムを指定した数のノードに複製されるまでブロックする (-1の場合、すべてのレプリカ) [デフォルト= 0]
--lock 更新用ロックキーへ時間設定 (ゼロの場合、ロックされない) [デフォルト= 0]
-Z --config-cache キャッシュ設定へのパス[デフォルト= '' ]
-? --help ヘルプメッセージを表示する

共通オプション

以下のオプションは、クラスターへの接続に関連する、libcouchbaseコマンドの共通オプションです。

省略 非省略 説明
-U --spec 接続文字列 [デフォルト='couchbase://localhost/default' ]
-u --username ユーザー名 [デフォルト= '' ]
-P --password バケットパスワード [デフォルト= '' ]
-T --timings 実行終了時にコマンドタイミングをダンプします。これにより、実行されたコマンドの待ち時間を示すヒストグラムが表示されます。 (詳細:cbstats timings)[デフォルト= FALSE]
-v --verbose デバッグ出力を有効にする [デフォルト= FALSE]
-D --cparam 接続のための追加のオプション(<OPTION>=<VALUE>の書式で指定)。例えば、KV操作タイムアウトには-D-timeout=<SECONDS>を使用する[デフォルト=]
-y --compress 送信データの圧縮をオンにします( sec-OND時刻力圧縮) [デフォルト= FALSE]
--truststorepath [デフォルト= '' ]
--certpath サーバーSSL証明書へのパス[デフォルト= '' ]
--keypath クライアントSSL秘密鍵へのパス[デフォルト= '' ]
--dump 操作完了後に詳細な内部状態をダンプする [Default = FALSE]

ベンチマーク実行例

20スレッドで実行。1スレッド当たり1バッチ処理実行。

$ cbc-pillowfight -t 20 -B 1

50アイテムのデータセットを使って、100回のイテレーションを行う。

$ cbc-pillowfight -c 100 -I 50

サイズ100kのJSONドキュメントを利用。

$ cbc-pillowfight --json -m 100000 -M 100000

サブドキュメント操作によるストレステスト。

$ cbc-pillowfight --json --subdoc --set-pct 100

接続先、アカウントの指定。JSONドキュメントを、10秒後に期限切れにする。

$ cbc-pillowfight -U couchbase://localhost/pillow -u Administrator -P password --json -e 10

参考情報

Performance Testing and Load Testing Couchbase with Pillowfight

Couchbase公式ドキュメント C SDK

Couchbase C Client 2.6.2

A Workload Generator for Couchbase in OpenShift

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0