memo for "Redis latency problems troubleshooting"
http://redis.io/topics/latency をみて個人的にメモりたくなった点を以下に。
- RedisはRDB snapshotとかAOFを作るときにfork()するので、マルチコア推奨
- GET commandとかはO(1)だけど、LREMとかO(N)のものもあるので http://redis.io/commands で計算量確認してね
- SLOWLOG commandで任意のコマンドの実行時間見れるよ
- fork()の際はCOWなんだけども、親プロセスのメモリがでかい場合はPTEのコピーでCPU timeがとられるので注意
- 最近のLinuxで使えるhuge pageだとPTEが小さくなるけど、その分COWでのwriteが走りやすくなるので微妙
- RDBとかAOFでDisk I/Oが増えると、page cacheが増えて、swapしやすくなるかも
- swapの調査では/proc/(Redis pid)/smapを調査するといいよ。あと定番のvmstatとか。
- AOFではfdatasync(2)使っているので何気にやばい