redisとmemcachedのベンチマークをmemtier-benchmarkで取る

これは何

redisとmemcachedベンチマークを memtier-benchmark というツールで取った。 ざっくりまとめておく。

github.com

memtier-benchmark と redis-benchmark の比較

主にmemtier-benchmarkのメリット。redis-benchmarkにできないこと。

  • redis, memcache の両方のプロトコルを喋れる(redis-benchはredisのみ)
  • SET/GETの重み付けができる(redis-benchはそれぞれ別に全力で投げる)
  • keyとvalueサイズを変えられて(redis-benchはkeyサイズを変えるのが大変。valueサイズはどちらもオプションで変えられる。)

memtier-benchmark のインストー

概ねREADMEどおりにできた。 インストールしたlibevent-2.0がmemtier-benchmark実行時に見つからなかったので雑にlinkして見えるようにした(多分良い解決策ではないが、使い捨て負荷試験環境なので良し)。

sudo ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

コマンド

memtier_benchmark -p 6379 -P redis --threads 4 -c 250  --test-time=10 --ratio=1:10 --data-size-list=1000:60,5000:30,100000:10  --key-prefix=memtier-memtier-memtier- --key-maximum=100000

実際にやったコマンドとは異なるが、サンプルとして書いておく。以下雑な説明

  • -p port
  • -P protocol
  • –threads クライアントのスレッド数
  • -c スレッド数あたりのコネクション数。トータル4*250=1000となる
  • –test-time テスト時間
  • –data-size-list. 今回はmemcachedからredisへの移行が目的。現行のmemcachedのデータに合うようにweightを決めた(別記事として書くかもしれない)
  • –key-prefix key長を適当に調整するために使える
  • –key-maximum キーのバリエーションになると思う