Redisロギングスロークエリログ機能
11368 ワード
一、slow logとは何か
Slow logは、Redisがクエリ実行時間を記録するためのログシステムである.クエリー実行時間とは、クライアント応答(talking)、返信送信などのIO操作を含まず、クエリーコマンドを1つ実行するのに要する時間を指す.また、slow logはメモリに保存されており、読み書き速度が非常に速いため、slow logをオンにすることでRedisの速度を損なう心配はありません.
二、slowlog Slow logを設定動作は2つの構成パラメータ(configuration parameter)によって指定され、redisを書き換えることができる.confファイルまたはconfig getコマンドとconfig getコマンドで動的に変更します.1、最初の選択肢はslowlog-log-slower-than
≪アクション|Actions|emdw≫:実行時間がマイクロ秒(microsecond,1秒=1000000マイクロ秒)より大きいクエリーを記録するかどうかを決定します.たとえば、次のコマンドを実行すると、すべてのクエリー時間が100マイクロ秒以上のクエリーがslow logに記録されます.CONFIG SET slow-log-slower-than 100です.次のコマンドは、すべてのクエリー時間が1000マイクロ秒以上のクエリーを記録します.CONFIG SET slow-log-slower-than 1000
2、もう一つの選択肢はslowlog-max-len
役割:slow logが最大でどれだけのログを保存できるかを決定します.slow log自体はFIFOキューで、キューサイズがslowlog-max-lenを超えると、最も古いログが削除され、最新のログがslow logに追加されます.すなわち、サーバslowlog-max-lenの値が100であり、サーバが100個の遅いクエリー・ログを格納していると仮定すると、サーバが新しいログを追加する場合は、現在保存されている最も古いログを削除してから、新しいログを追加する必要があります.
3、config get/setコマンドを使用して、2つのオプションの現在値をクエリー/設定する
三、slow logを表示slow logを表示するには、slowlog getまたはslowlog get numberコマンドを使用します.前者はすべてのslow logを印刷します.最大長はslowlog-max-lenオプションの値に依存しますが、slowlog get numberは指定された数のログのみを印刷します.
コメント:
ログの唯一のidは、Redisサーバが再起動するたびにリセットされます.これにより、ログの重複処理を回避できます(たとえば、新しい遅いクエリーが発見されるたびにメールで通知したい場合があります).この時点でSLOWLOG GETコマンドをもう1つ実行すると、前回実行したSLOWLOG GETコマンドはスロークエリーログに記録されていますが、最も古い0番のスロークエリーログは削除され、サーバのスロークエリーログの数は5つになります.
四、現在のログの数を表示コマンドslowlog lenを使用して現在のログの数を表示します.この値とslower-max-lenの違いに注意してください.1つは現在のログの数であり、1つは記録が許可されている最大ログの数です.
五、クリアログコマンドslowlog RESETを使用してslow logをクリアすることができる.
Slow logは、Redisがクエリ実行時間を記録するためのログシステムである.クエリー実行時間とは、クライアント応答(talking)、返信送信などのIO操作を含まず、クエリーコマンドを1つ実行するのに要する時間を指す.また、slow logはメモリに保存されており、読み書き速度が非常に速いため、slow logをオンにすることでRedisの速度を損なう心配はありません.
二、slowlog Slow logを設定動作は2つの構成パラメータ(configuration parameter)によって指定され、redisを書き換えることができる.confファイルまたはconfig getコマンドとconfig getコマンドで動的に変更します.1、最初の選択肢はslowlog-log-slower-than
≪アクション|Actions|emdw≫:実行時間がマイクロ秒(microsecond,1秒=1000000マイクロ秒)より大きいクエリーを記録するかどうかを決定します.たとえば、次のコマンドを実行すると、すべてのクエリー時間が100マイクロ秒以上のクエリーがslow logに記録されます.CONFIG SET slow-log-slower-than 100です.次のコマンドは、すべてのクエリー時間が1000マイクロ秒以上のクエリーを記録します.CONFIG SET slow-log-slower-than 1000
2、もう一つの選択肢はslowlog-max-len
役割:slow logが最大でどれだけのログを保存できるかを決定します.slow log自体はFIFOキューで、キューサイズがslowlog-max-lenを超えると、最も古いログが削除され、最新のログがslow logに追加されます.すなわち、サーバslowlog-max-lenの値が100であり、サーバが100個の遅いクエリー・ログを格納していると仮定すると、サーバが新しいログを追加する場合は、現在保存されている最も古いログを削除してから、新しいログを追加する必要があります.
3、config get/setコマンドを使用して、2つのオプションの現在値をクエリー/設定する
redis> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "1000"
redis> config set slowlog-log-slower-than 0
OK
redis> config get slowlog-max-len
1) "slowlog-max-len"
2) "128"
redis> config set slowlog-max-len 5
OK
三、slow logを表示slow logを表示するには、slowlog getまたはslowlog get numberコマンドを使用します.前者はすべてのslow logを印刷します.最大長はslowlog-max-lenオプションの値に依存しますが、slowlog get numberは指定された数のログのみを印刷します.
# :
redis> SET msg "hello world"
OK
redis> SET number 10086
OK
redis> SET database "Redis"
OK
# SLOWLOG GET :
redis> SLOWLOG GET
1) 1) (integer) 4 # (unique)
2) (integer) 1378781447 # , UNIX
3) (integer) 13 # ,
4) 1) "SET" #
2) "database"
3) "Redis"
2) 1) (integer) 3
2) (integer) 1378781439
3) (integer) 10
4) 1) "SET"
2) "number"
3) "10086"
3) 1) (integer) 2
2) (integer) 1378781436
3) (integer) 18
4) 1) "SET"
2) "msg"
3) "hello world"
4) 1) (integer) 1
2) (integer) 1378781425
3) (integer) 11
4) 1) "CONFIG"
2) "SET"
3) "slowlog-max-len"
4) "5"
5) 1) (integer) 0
2) (integer) 1378781415
3) (integer) 53
4) 1) "CONFIG"
2) "SET"
3) "slowlog-log-slower-than"
4) "0"
コメント:
ログの唯一のidは、Redisサーバが再起動するたびにリセットされます.これにより、ログの重複処理を回避できます(たとえば、新しい遅いクエリーが発見されるたびにメールで通知したい場合があります).この時点でSLOWLOG GETコマンドをもう1つ実行すると、前回実行したSLOWLOG GETコマンドはスロークエリーログに記録されていますが、最も古い0番のスロークエリーログは削除され、サーバのスロークエリーログの数は5つになります.
redis> SLOWLOG GET
1) 1) (integer) 5
2) (integer) 1378781521
3) (integer) 61
4) 1) "SLOWLOG"
2) "GET"
2) 1) (integer) 4
2) (integer) 1378781447
3) (integer) 13
4) 1) "SET"
2) "database"
3) "Redis"
3) 1) (integer) 3
2) (integer) 1378781439
3) (integer) 10
4) 1) "SET"
2) "number"
3) "10086"
4) 1) (integer) 2
2) (integer) 1378781436
3) (integer) 18
4) 1) "SET"
2) "msg"
3) "hello world"
5) 1) (integer) 1
2) (integer) 1378781425
3) (integer) 11
4) 1) "CONFIG"
2) "SET"
3) "slowlog-max-len"
4) "5"
四、現在のログの数を表示コマンドslowlog lenを使用して現在のログの数を表示します.この値とslower-max-lenの違いに注意してください.1つは現在のログの数であり、1つは記録が許可されている最大ログの数です.
redis> slowlog len
(integer) 5
五、クリアログコマンドslowlog RESETを使用してslow logをクリアすることができる.
redis> slowlog len
(integer) 14
redis> slowlog reset
OK
redis> slowlog len
(integer) 0