redis学習(2)

1743 ワード

Redis2.6の番犬
watchdog(番犬)はRedis 2.6リリースでは、Redisの遅延の問題を診断するための新しい機能がリリースされます.この機能は、スロー・ログに似ています.主に原因を調べるために遅い行為を記録します.その具体的な動作原理と流れは以下の通りである.
  • 運転時のCONFIGSETコマンドによりwatchdogのオープンパラメータ
  • を設定する.
  • の設定が完了すると、Redisは自身のコマンド処理に対する性能モニタリング
  • を開始する.
  • Redisは、自分がいくつかの操作を処理するのに十分ではないことに気づいた場合、どの部分に時間を費やしたかを含む情報をログに記録し、具体的な呼び出しスタック
  • を発行する.
  • 問題が発生したユーザーがコミュニティにフィードバックしたとき、ログの診断情報を持って、開発者はあなたの問題
  • に迅速かつ正確に位置することができます.
    Redisの著者らは,watchdogはまだ実験的な機能であり,オンにするとデータに影響を及ぼす可能性があるため,使用時にデータバックアップを行うことを提案している.
    watchdogの具体的な設定方法は、次の例に示します.
    CONFIG SET watchdog-period 500

    CONFIGSETコマンドでwatchdog-periodパラメータをミリ秒単位で設定します.上記の例では、500ミリ秒を超える動作が記録されます.
    注意:このパラメータはCONFIGSETでしか設定できません.プロファイルでは設定できません.デフォルトでは、開くことは推奨されません.性能と安定性に影響を及ぼす.診断が完了したら、上記のコマンドで遅延時間を0に設定してwatchdogの機能をオフにすることができます.
    watchdogのログへの出力は次の例です.
    [8547 | signal handler] (1333114359)
    --- WATCHDOG TIMER EXPIRED ---
    /lib/libc.so.6(nanosleep+0x2d) [0x7f16b5c2d39d]
    /lib/libpthread.so.0(+0xf8f0) [0x7f16b5f158f0]
    /lib/libc.so.6(nanosleep+0x2d) [0x7f16b5c2d39d]
    /lib/libc.so.6(usleep+0x34) [0x7f16b5c62844]
    ./redis-server(debugCommand+0x3e1) [0x43ab41]
    ./redis-server(call+0x5d) [0x415a9d]
    ./redis-server(processCommand+0x375) [0x415fc5]
    ./redis-server(processInputBuffer+0x4f) [0x4203cf]
    ./redis-server(readQueryFromClient+0xa0) [0x4204e0]
    ./redis-server(aeProcessEvents+0x128) [0x411b48]
    ./redis-server(aeMain+0x2b) [0x411dbb]
    ./redis-server(main+0x2b6) [0x418556]
    /lib/libc.so.6(__libc_start_main+0xfd) [0x7f16b5ba1c4d]
    ./redis-server() [0x411099]
    ------

    上のログはDEBUG SLEEPコマンドによって生成されます.自分の具体的な問題を診断するときに異なるログが発生する可能性があります.問題を診断するときに、同時に複数のログを出したら、できるだけ出して、開発者のエラーチェックを容易にします.
    ソース:http://redis.io/topics/latency