Redisのレイテンシを計測

やりたいこと

Redis に TCP でコマンドを投げた時

DNS Lookup -> Initial Connection -> Request Sent -> Waiting(TTFB) -> Content Download

というような流れで処理される。
この一連の流れで

Redis の内部処理にかかった Waiting(TTFB) を除く通信の時間を計測する方法をメモ。

通信のレイテンシ

Redis には疎通確認向けのコマンド PING がある。
クライアントがこのコマンドを実行すると、サーバーは PONG を返すだけ。

このコマンドに対してサーバー(Redis)の処理は極めて軽微なため、PING を実行してから PONG がかえってくるまでの時間をレイテンシとみなして計測するのが次のコマンド。

$ redis-cli --latency -h HOST -p PORT # Ctrl-C で計測を止める
min: 0, max: 2, avg: 0.18 (103 samples)

上の例で言えば

  • 103 回 PING を実行し(samples)
  • レイテンシの 最短(min)/最長(max)/平均(avg) がそれぞれ 0ms/2ms/0.18ms

となる。

AWS ElastiCache では AZ をまたぐと同一 AZ に比べてレイテンシが10倍だったりするので、レイテンシを何としても切り詰めたいときは

  •  1コマンド1リクエストとせず Mass Insert を利用してリクエスト回数を減らす
  • マルチ AZ Redis クラスターを諦めて 同一 AZ の Redis に接続

などの対応が必要。

AWS の外から ElastiCache と通信すると、同一AZ/別AZ/AWS外のレイテンシーの違いがよくわかると思ったのだが、セキュリティー上、EC2 からしかアクセス出来ないようになっていたので計測できず。

Please note that IP-range based access control is currently not enabled for Cache Clusters. All clients to a Cache Cluster must be within the EC2 network, and authorized via security groups as described above
http://aws.amazon.com/elasticache/faqs/

参照

Redis の内部処理

コマンド実行単位では、今のところは処理時間を知るすべは提供されていないが、処理時間がしきい値を超えたコマンドをロギングする仕組みはある。

SLOWLOG コマンドを利用

SLOWLOG を使うと、処理に一定時間以上かかったコマンドの実行ログ詳細を確認できる。

http://redis.io/commands/slowlog

デフォルトでしきい値は 10000 ms に設定されている。

> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "1000"

LATENCY コマンドを利用

Redis 2.8.13 から処理の遅かったコマンドの分布・傾向を知るための latency monitoring framework が追加されている。

デフォルトでは無効化されているので

CONFIG SET latency-monitor-threshold 100

などで有効化すること。

参照

Advertisements
Tagged with: ,
Posted in middleware

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: