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)使っているので何気にやばい