ホームページ >データベース >Redis >Redis スロークエリとは何ですか

Redis スロークエリとは何ですか

藏色散人
藏色散人オリジナル
2020-11-04 17:12:143615ブラウズ

Redis スロークエリとは、コマンドの実行時間が比較的長いクエリのことを指します。スロークエリログとは、Redis サーバーがコマンド実行前後の各コマンドの実行時間を計算し、一定のしきい値を超えた場合に発生するログです。 , ログが記録されます。 , ログには、スロークエリが発生した時刻、実行時間、特定のコマンド、その他の情報が記録されます。

Redis スロークエリとは何ですか

推奨事項: 「redis チュートリアル

スロークエリとは何ですか?

遅いクエリは、その名前が示すように、比較的遅いクエリですが、どこが遅いのでしょうか?まず、Redis コマンド実行のプロセス全体を理解しましょう:

  1. コマンドの送信
  2. コマンド キューイング
  3. コマンドの実行
  4. 結果を返す

遅いクエリの定義では、統計が比較的遅い期間は、コマンド実行のステップを指します。遅いクエリがないことは、クライアントにタイムアウトの問題がないことを意味するわけではなく、ネットワーク送信に遅延が発生したり、キューに追加のコマンドが存在したりする可能性があります。

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 つの属性で構成されていることがわかります:

  1. 一意の識別 ID
  2. コマンド実行のタイムスタンプ
  3. コマンド実行時間
  4. 実行の名前とパラメータ

スロークエリログの長さを取得するにはどうすればよいですか?

slowlog len コマンドを使用して、スロー クエリ ログの長さを取得できます。例:

> slowlog len
(integer) 121

上記の例では、現在 121 個のスロー クエリがあります。 Redis にログインします。

スロークエリログをクリアするにはどうすればよいですか?

slowlogreset コマンドを使用して、スロー クエリ ログをクリアできます。例:

> slowlog len
(integer) 121
> slowlog reset
OK
> slowlog len
(integer) 0

スロー クエリ パラメータを構成するにはどうすればよいですか?

前述したように、低速クエリには次の 2 つの構成が必要です。

  1. コマンド実行時間の指定されたしきい値。
  2. 保存されているスロークエリログの数。

Redis には、slowlog-log-slower-than と throwlog-max-len という 2 つのパラメータが用意されています。次に、これら 2 つのパラメータについて詳しく紹介します。

slowlog-log-swer-than

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

slowlog-max-len は、保存するスロー クエリ ログの最大数を指定するために使用されます。実際、Redis はリストを使用してスロー クエリ ログを保存し、slowlog-max-len がこのリストの最大長です。新しいコマンドが低速クエリ条件を満たすと、このリストに挿入されます。スロー クエリ ログ リストが最大長に達すると、最も早く挿入されたコマンドがリストから削除されます。たとえば、slowlog-max-len は 10 に設定されます。11 番目のコマンドが挿入されると、リストの最初のコマンドが最初に削除され、次に 11 番目のコマンドがリストに追加されます。

遅いクエリを記録するということは、Redis が長いコマンドを切り捨て、大量のメモリを占有しないことを意味します。実際の運用環境では、スロー クエリが削除される可能性を減らし、スロー クエリをより便利に見つけるために、スロー クエリのログの長さを大きく調整することをお勧めします。たとえば、1000 以上に設定できます。

構成方法

Redis の構成を変更するには 2 つの方法があります:

  1. 修改Redis配置文件。比如,把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:
slowlog-log-slower-than 1000
slowlog-max-len 1200
  1. 使用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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。