Redis Clusterのベンチマークを取る


Redis 公式の redis-benchmark は クラスターモードに対応していませんが、 memtier_benchmark を使えば手軽に取れるというメモです。

インストール

https://github.com/RedisLabs/memtier_benchmark のREADMEの通り

CentOS

$ sudo yum install autoconf automake make gcc-c++ 
$ sudo yum install pcre-devel zlib-devel libmemcached-devel

# CentOS6系の場合
$ wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
$ tar xfz libevent-2.0.21-stable.tar.gz
$ pushd libevent-2.0.21-stable
$ ./configure
$ make
$ sudo make install
$ popd
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}

# CentOS7系の場合
$ sudo yum install libevent-devel

$ git clone https://github.com/RedisLabs/memtier_benchmark.git
$ cd memtier_benchmark
$ autoreconf -ivf
$ ./configure
$ make
$ sudo make install
$ memtier_benchmark --help

Ubuntu

$ sudo apt-get install build-essential autoconf automake libpcre3-dev libevent-dev pkg-config zlib1g-dev

$ git clone https://github.com/RedisLabs/memtier_benchmark.git
$ cd memtier_benchmark
$ autoreconf -ivf
$ ./configure
$ make
$ sudo make install
$ memtier_benchmark --help

Docker

$ git clone https://github.com/RedisLabs/memtier_benchmark.git
$ cd memtier_benchmark
$ docker build -t memtier_benchmark .
$ docker run --rm memtier_benchmark --help

# 実行はdocker runにargsを渡す
docker run --rm memtier_benchmark --help

実行

# --cluster-mode をつけてクラスターのマスターノードの一つを指定します。
$ memtier_benchmark -s 127.0.0.1 -p 6379 --cluster-mode

# 例) パスワード指定、8スレッドで各スレッド100コネクション、データサイズランダムな500byte、SET:GETコマンドの割合が1:2、で20000リクエストを送信
$ memtier_benchmark -s 127.0.0.1 -p 6379 -a password --cluster-mode -t 8 -c 100 -R --ratio=1:2 -d 500 -n 20000

スレッド数 * コネクション数 * リクエスト数 の数だけコマンドが送信されます。上記の例でいうと 8 * 100 * 20000 = 1600万

より詳しいオプションはヘルプを参照してください。

$ memtier_benchmark --help