Redis スロークエリとは、コマンドの実行時間が比較的長いクエリのことを指します。スロークエリログとは、Redis サーバーがコマンド実行前後の各コマンドの実行時間を計算し、一定のしきい値を超えた場合に発生するログです。 , ログが記録されます。 , ログには、スロークエリが発生した時刻、実行時間、特定のコマンド、その他の情報が記録されます。
推奨事項: 「redis チュートリアル 」
遅いクエリは、その名前が示すように、比較的遅いクエリですが、どこが遅いのでしょうか?まず、Redis コマンド実行のプロセス全体を理解しましょう:
遅いクエリの定義では、統計が比較的遅い期間は、コマンド実行のステップを指します。遅いクエリがないことは、クライアントにタイムアウトの問題がないことを意味するわけではなく、ネットワーク送信に遅延が発生したり、キューに追加のコマンドが存在したりする可能性があります。
Redis ではコマンド実行のキューイング機構により、クエリが遅いと他のコマンドがカスケードブロックされてしまうため、クライアント側でリクエストタイムアウトが発生した場合には、クライアント側で遅いクエリが存在するかどうかを確認する必要があります。その時点で、クエリの遅さが原因でコマンド カスケード ブロックが発生した理由を分析します。
スロークエリログとは、Redisサーバーが各コマンドの実行前後の実行時間を計算し、一定の閾値を超えた場合に記録されるログです。ログには、スロークエリが発生した時刻、実行時間、特定のコマンドなどの情報が記録され、開発担当者や運用保守担当者がシステム内に存在するスロークエリを特定するのに役立ちます。
slowlog get
コマンドを使用して、スロー クエリ ログを取得できます。また、slowlog get
の後に数値を追加して、スロー クエリ ログの数を指定することもできます。取得 (例: 3 つのスロー クエリ ログを取得します):
> slowlog get 3 1) 1) (integer) 6107 2) (integer) 1616398930 3) (integer) 3109 4) 1) "config" 2) "rewrite" 2) 1) (integer) 6106 2) (integer) 1613701788 3) (integer) 36004 4) 1) "flushall" 3) 1) (integer) 6105 2) (integer) 1608722338 3) (integer) 20449 4) 1) "scan" 2) "0" 3) "MATCH" 4) "*comment*" 5) "COUNT" 6) "10000"
上記の例から、各スロー クエリ ログは 4 つの属性で構成されていることがわかります:
slowlog len
コマンドを使用して、スロー クエリ ログの長さを取得できます。例:
> slowlog len (integer) 121
上記の例では、現在 121 個のスロー クエリがあります。 Redis にログインします。
slowlogreset
コマンドを使用して、スロー クエリ ログをクリアできます。例:
> slowlog len (integer) 121 > slowlog reset OK > slowlog len (integer) 0
前述したように、低速クエリには次の 2 つの構成が必要です。
Redis には、slowlog-log-slower-than と throwlog-max-len という 2 つのパラメータが用意されています。次に、これら 2 つのパラメータについて詳しく紹介します。
slowlog-log-swer-than の機能は、コマンド実行時間のしきい値を指定することです。コマンドの実行時間がこのしきい値を超えた場合、 、記録されます。単位はマイクロ秒 (1 秒 = 1000 ミリ秒 = 1000000 マイクロ秒) で、デフォルトは 10000 マイクロ秒です。 lowlog-log-swer-than が 0 に設定されている場合、すべてのコマンドがログに記録されます。 lowlog-log-swer-than が 0 未満に設定されている場合、コマンドはログに記録されません。
実際の運用環境では、この構成は Redis の同時実行性に応じて調整する必要があります。 Redis は単一のスレッドを使用してコマンドに応答するため、コマンドの実行時間が 1000 マイクロ秒を超える場合、Redis は最大 1000 未満の OPS をサポートできます。そのため、Redis を 1000 マイクロ秒 に設定することをお勧めします。同時実行性の高いシナリオ。
slowlog-max-len は、保存するスロー クエリ ログの最大数を指定するために使用されます。実際、Redis はリストを使用してスロー クエリ ログを保存し、slowlog-max-len がこのリストの最大長です。新しいコマンドが低速クエリ条件を満たすと、このリストに挿入されます。スロー クエリ ログ リストが最大長に達すると、最も早く挿入されたコマンドがリストから削除されます。たとえば、slowlog-max-len は 10 に設定されます。11 番目のコマンドが挿入されると、リストの最初のコマンドが最初に削除され、次に 11 番目のコマンドがリストに追加されます。
遅いクエリを記録するということは、Redis が長いコマンドを切り捨て、大量のメモリを占有しないことを意味します。実際の運用環境では、スロー クエリが削除される可能性を減らし、スロー クエリをより便利に見つけるために、スロー クエリのログの長さを大きく調整することをお勧めします。たとえば、1000 以上に設定できます。
Redis の構成を変更するには 2 つの方法があります:
slowlog-log-slower-than 1000 slowlog-max-len 1200
config set
命令动态修改。比如,还是把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:> config set slowlog-log-slower-than 1000 OK > config set slowlog-max-len 1200 OK > config rewrite OK
如果要Redis把配置持久化到本地配置文件,需要执行config rewrite
命令。
慢查询指的是命令执行时长比较长的查询。通过slowlog get命令获取慢查询日志;通过slowlog len命令获取慢查询日志的长度;通过slowlog reset命令清理慢查询日志。通过slowlog-log-slower-than配置命令执行时长的阈值;通过slowlog-max-len配置慢查询日志最多存储的条数
以上がRedis スロークエリとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。