Redisの遅いログの紹介
Redis Slow Log Introduction
イントロ
redisサーバーでの処理に時間がかかり、リクエストがタイムアウトするコマンドがある可能性があります。長時間実行されるコマンドのいくつかの例は、多数のキー、キー*、または不十分に記述されたluaスクリプトを含むmgetです。 SlowLogコマンドを実行して、リクエストに予想よりも時間がかかるかどうかを確認できます。
Redisの遅いログの概要
Redis Slow Log
指定された実行時間を超えるクエリを記録するシステムです。実行時間には、クライアントとの通信や応答の送信などのI / O操作は含まれませんが、実際にコマンドを実行するために必要な時間のみが含まれます(これは、コマンドが実行される唯一のフェーズであり、スレッドブロックされ、同時に他のリクエストを処理することはできません)。
低速ログは、次の2つのパラメーターで構成できます。
slowlog-log-slow-than
コマンドをログに記録するために経過した実行時間(マイクロ秒単位)をRedisに通知します。負の数は低速ログを無効にし、値がゼロの場合は各コマンドが強制的にログに記録されることに注意してください。slowlog-max-len
遅いログの長さです。最小値はゼロです。新しいコマンドがログに記録され、低速ログがすでに最大長になっている場合、スペースを確保するために、記録されたコマンドキューから最も古いコマンドが削除されます。
構成を編集できますredis.conf
またはサーバーが実行されているときCONFIG GET
CONFIG SET
で完了するコマンド。
遅いログを見る
遅いログはメモリに蓄積されるため、遅いコマンド実行情報に関するファイルは書き込まれません。これにより、ロギングが非常に高速になり、影響を少なくしてすべてのコマンドのロギングを有効にできます(will slowlog-log-slow- config
構成パラメーターはゼロに設定されます)。
低速ログを読み取るには、SLOWLOG GET
Commandを使用します。これにより、低速ログの各エントリが返されます。最新のN個のエントリのみを返し、他のパラメータをコマンドに渡すことができます(たとえば、SLOWLOG GET 10
)。
遅いログ出力を読み取るには、redis-cli
を使用する必要があることに注意してください。以前に使用されていたため、最新バージョンredis-cli
プロセスに実装されたいくつかのプロトコル機能(深くネストされたマルチバッチ応答)
出力フォーマット
redis 127.0.0.1:6379> slowlog get 2 1) 1) (integer) 14 2) (integer) 1309448221 3) (integer) 15 4) 1) 'ping' 2) 1) (integer) 13 2) (integer) 1309448128 3) (integer) 30 4) 1) 'slowlog' 2) 'get' 3) '100'
各エントリは、次の4つのフィールドで構成されています。
- 低速ログエントリごとの一意のプログレッシブ識別子。
- 処理中のコマンドのUNIXタイムスタンプ。
- 実行に必要な時間(マイクロ秒単位)。
- コマンドパラメータの配列。
このエントリの一意のIDを使用すると、低速ログエントリが複数回処理されるのを防ぐことができます(たとえば、新しい低速ログエントリごとに電子メールアラートを送信するスクリプトがある場合があります)。
Redisサーバーの実行中、IDがリセットされることはなく、サーバーが再起動された場合にのみリセットされます。
遅いログの現在の数を取得します
コマンドを使用SLOWLOG LEN
遅いログの長さを取得できます。
遅いログをリセットする
SLOWLOG RESET
を使用できますこのコマンドは、遅いログをリセットします。削除されると、情報は永久に失われます。