Redis パフォーマンス監視

RedisRedisBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験(Lab)では、Redis のパフォーマンスに関する問題を監視し、トラブルシューティングする方法を学びます。この実験(Lab)では、レイテンシの問題の特定と対処、メモリ使用量の分析、およびクエリパフォーマンスの最適化に焦点を当てます。

LATENCY DOCTOR コマンドを使用してレイテンシを診断し、MEMORY STATS を使用してメモリ使用量を確認し、SLOWLOG GET を使用して遅いクエリを分析し、MEMORY PURGE を使用してメモリを最適化します。ステップバイステップのガイドに従うことで、応答性が高く効率的な Redis デプロイメントを維持するための実践的な経験を得ることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") subgraph Lab Skills redis/access_cli -.-> lab-552100{{"Redis パフォーマンス監視"}} end

LATENCY DOCTOR でレイテンシを監視する

このステップでは、Redis で LATENCY DOCTOR コマンドを使用して、レイテンシの問題を診断し、トラブルシューティングする方法を学びます。レイテンシを理解し、対処することは、応答性が高く効率的な Redis デプロイメントを維持するために重要です。

レイテンシとは?

レイテンシとは、Redis サーバーにリクエストを送信してから応答を受信するまでの遅延のことです。高いレイテンシは、アプリケーションのパフォーマンスに悪影響を及ぼし、応答時間の遅延やユーザーエクスペリエンスの低下につながる可能性があります。

LATENCY DOCTOR の紹介

LATENCY DOCTOR コマンドは、Redis に組み込まれている強力なツールであり、レイテンシの潜在的な原因を特定するのに役立ちます。Redis の動作のさまざまな側面を分析し、遅延の原因となっている可能性のあるものについての洞察を提供します。

ステップバイステップガイド

  1. Redis に接続する:

    まず、redis-cli コマンドを使用して Redis サーバーに接続します。LabEx VM でターミナルを開き、以下を実行します。

    redis-cli

    これにより、Redis コマンドラインインターフェースが開きます。

  2. LATENCY DOCTOR を実行する:

    接続したら、LATENCY DOCTOR コマンドを実行するだけです。

    LATENCY DOCTOR

    Redis がシステムを分析し、レポートを提供します。

  3. 出力の解釈:

    LATENCY DOCTOR の出力は非常に冗長になる可能性がありますが、貴重な情報を提供します。サンプル出力を分解してみましょう。

    127.0.0.1:6379> LATENCY DOCTOR
    I am The Doctor, and I am here to help you with your latency problems.
    Please wait...
    
    --- SUMMARY ---
    
    Nominal latency seems ok.
    
    --- DETAILS ---
    
    * Key lookup seems ok.
    * Slow calls:
        - command: slowlog get 128
          occurred 1 times
          max latency: 1 milliseconds
    
    --- ADVICE ---
    
    Check the slowlog to understand what queries are taking the most time.
    • SUMMARY (概要): このセクションでは、レイテンシの状況の概要が示されます。この例では、公称レイテンシは問題ないようです。
    • DETAILS (詳細): このセクションでは、潜在的な問題領域に関するより具体的な情報が提供されます。ここでは、「Slow calls (遅い呼び出し)」が強調表示され、slowlog の確認が推奨されています。
    • ADVICE (アドバイス): このセクションでは、特定された問題をさらに調査し、対処する方法に関する推奨事項が提供されます。
  4. 遅いクエリの分析 (LATENCY DOCTOR で推奨されているように):

    LATENCY DOCTOR の出力では、slowlog の調査が推奨されることがよくあります。slowlog は、指定された実行時間を超えるクエリをログに記録する Redis の機能です。slowlog については、次のステップで詳しく説明します。ここでは、推奨されているように slowlog を表示してみましょう。

    SLOWLOG GET 128

    このコマンドは、最新の 128 個の slowlog エントリを取得します。出力には、実行に最も時間がかかったコマンドと、それらの実行時間とタイムスタンプが表示されます。

  5. redis-cli を終了する:

    コマンドがログに記録されるように、次のように入力して redis-cli を終了します。

    exit

重要性の理解

LATENCY DOCTOR を使用し、slowlog を分析することで、Redis デプロイメントのパフォーマンスに関する貴重な洞察を得ることができます。これにより、ボトルネックを特定して対処し、クエリを最適化し、スムーズで応答性の高いユーザーエクスペリエンスを確保できます。

MEMORY STATS でメモリをチェックする

このステップでは、Redis で MEMORY STATS コマンドを使用して、メモリ使用量を監視および理解する方法を学びます。効率的なメモリ管理は、Redis サーバーの安定性とパフォーマンスにとって非常に重要です。

メモリを監視する理由

Redis はインメモリデータストアであり、すべてのデータを RAM に保存することを意味します。Redis のメモリが不足すると、パフォーマンスの低下、データ損失、またはクラッシュが発生する可能性があります。メモリ使用量を監視することで、潜在的なメモリ関連の問題を事前に特定して対処できます。

MEMORY STATS の紹介

MEMORY STATS コマンドは、Redis のメモリ消費量の詳細な概要を提供します。メモリ使用量をさまざまなカテゴリに分類し、メモリがどこで使用されているかについての洞察を提供します。

ステップバイステップガイド

  1. Redis に接続する:

    redis-cli コマンドを使用して Redis サーバーに接続します。LabEx VM でターミナルを開き、以下を実行します。

    redis-cli

    これにより、Redis コマンドラインインターフェースが開きます。

  2. MEMORY STATS を実行する:

    接続したら、MEMORY STATS コマンドを実行します。

    MEMORY STATS

    Redis がメモリ統計を収集し、結果を表示します。

  3. 出力の解釈:

    MEMORY STATS の出力は、キーと値のペアのディクショナリであり、各キーはメモリ統計を表し、値は対応する値を表します。サンプル出力を確認し、主要なメトリックのいくつかについて説明します。

    127.0.0.1:6379> MEMORY STATS
     1) "peak.allocated"
     2) (integer) 1114480
     3) "total.allocated"
     4) (integer) 1114480
     5) "startup.allocated"
     6) (integer) 948480
     7) "replication.buffer"
     8) (integer) 0
     9) "clients.slaves"
    10) (integer) 0
    11) "clients.normal"
    12) (integer) 6456
    13) "aof.buffer"
    14) (integer) 0
    15) "lua.vm"
    16) (integer) 0
    17) "overhead.total"
    18) (integer) 165992
    19) "keys.count"
    20) (integer) 0
    21) "keys.bytes-per-key"
    22) (integer) 0
    23) "dataset.bytes"
    24) (integer) 948488
    25) "dataset.percentage"
    26) "0.00%"
    27) "bytes-per-replica.avg"
    28) (integer) 0
    29) "bytes-per-replica.min"
    30) (integer) 0
    31) "bytes-per-replica.max"
    32) (integer) 0
    33) "allocator.fragratio"
    34) "1.00"
    35) "allocator.fragbytes"
    36) (integer) 0
    37) "allocator.rss"
    38) (integer) 835584
    39) "allocator.peak"
    40) (integer) 1114112
    41) "total.system"
    42) (integer) 4194304
    43) "allocator.resident"
    44) (integer) 835584

    主要なメトリックのいくつかについて説明します。

    • peak.allocated (ピーク割り当て): Redis が起動してからのメモリ割り当ての最大量。
    • total.allocated (合計割り当て): Redis によって現在割り当てられているメモリの合計量。
    • dataset.bytes (データセットバイト): Redis に保存されているデータの合計サイズ (オーバーヘッドを除く)。
    • overhead.total (オーバーヘッド合計): Redis のオーバーヘッド (データ構造、メタデータなど) に使用されるメモリの合計量。
    • keys.count (キー数): Redis に現在保存されているキーの数。
    • allocator.fragratio (アロケータ断片化率): メモリ割り当てツールの断片化率。値が高いほど、断片化が多いことを示します。
    • allocator.rss (アロケータ RSS): オペレーティングシステムによって報告された、Redis が使用しているメモリ量 (Resident Set Size)。
    • total.system (システム合計): システムで使用可能なメモリの合計量。
  4. redis-cli を終了する:

    コマンドがログに記録されるように、次のように入力して redis-cli を終了します。

    exit

情報の使用

MEMORY STATS によって提供される情報は、次の目的で使用できます。

  • メモリリークの特定。
  • メモリ使用量を削減するためのデータ構造の最適化。
  • メモリ効率を向上させるための Redis 構成パラメータの調整。
  • Redis サーバーで使用可能な RAM の量を増やす必要があるかどうかの判断。

SLOWLOG GET で遅いクエリを分析する

このステップでは、Redis で SLOWLOG GET コマンドを使用して、遅いクエリの分析を詳しく調べます。遅いクエリを特定して最適化することは、応答性が高く効率的な Redis デプロイメントを維持するために不可欠です。最初のステップの LATENCY DOCTOR で示唆されているように、slowlog の分析は、レイテンシの問題をデバッグするための重要なステップです。

Slowlog とは?

slowlog は、指定された実行時間を超えるクエリをログに記録する Redis のシステムです。これにより、予想よりも時間がかかり、パフォーマンスに影響を与えている可能性のあるクエリを特定できます。

ステップバイステップガイド

  1. Redis に接続する:

    redis-cli コマンドを使用して Redis サーバーに接続します。LabEx VM でターミナルを開き、以下を実行します。

    redis-cli

    これにより、Redis コマンドラインインターフェースが開きます。

  2. Slowlog エントリを取得する:

    SLOWLOG GET コマンドを使用して、slowlog エントリを取得します。取得するエントリの数を指定できます。たとえば、最新の 10 個の slowlog エントリを取得するには、次のコマンドを使用します。

    SLOWLOG GET 10

    すべての slowlog エントリを取得する場合は、次を使用できます。

    SLOWLOG GET
  3. 出力の解釈:

    SLOWLOG GET の出力は、slowlog エントリの配列です。各エントリには、次の情報が含まれています。

    • Unique ID (ユニーク ID): slowlog エントリの一意の識別子。
    • Timestamp (タイムスタンプ): クエリが実行された Unix タイムスタンプ。
    • Execution Time (実行時間): クエリの実行時間 (マイクロ秒単位)。
    • Command (コマンド): 実行された完全なコマンド。
    • Client IP and Port (クライアント IP とポート) (利用可能な場合): コマンドを実行したクライアントの IP アドレスとポート。
    • Client Name (クライアント名) (設定されている場合): コマンドを実行したクライアントの名前。

    slowlog エントリの例を次に示します。

    1) 1) (integer) 1
       2) (integer) 1678886400
       3) (integer) 12345
       4) 1) "KEYS"
          2) "*"

    この例では:

    • 一意の ID は 1 です。
    • タイムスタンプは 1678886400 です。
    • 実行時間は 12345 マイクロ秒 (12.345 ミリ秒) です。
    • コマンドは KEYS * でした。
  4. Slowlog の分析:

    slowlog エントリを取得したら、それらを分析して遅いクエリを特定できます。実行時間の長いクエリを探します。以下を検討してください。

    • Frequency (頻度): 遅いクエリはどのくらいの頻度で発生しますか?頻繁に発生する場合は、パフォーマンスへの影響が大きくなる可能性があります。
    • Command Type (コマンドタイプ): どのようなタイプのコマンドですか? KEYS * などの一部のコマンドは、遅いことが知られており、本番環境では避ける必要があります。
    • Data Size (データサイズ): クエリは大量のデータを操作していますか?その場合は、データ構造またはクエリ自体を最適化することを検討してください。
  5. 例:遅いクエリのシミュレーション

    遅いクエリを特定する方法を示すために、多数のキーを Redis に挿入し、遅いことが知られている KEYS * コマンドを使用してみましょう。

    まず、いくつかのデータを追加しましょう。redis-cli で次のコマンドを実行します。

    for i in $(seq 1 1000); do SET key$i value$i; done

    これにより、Redis データベースに 1000 個のキーが作成されます。

    次に、KEYS * コマンドを実行します。

    KEYS *

    このコマンドは、データベース内のすべてのキーを取得します。多数のキーがあるため、このコマンドは遅くなる可能性があります。

    次に、slowlog を確認します。

    SLOWLOG GET 1

    slowlog に KEYS * コマンドのエントリと、その実行時間が表示されるはずです。

  6. redis-cli を終了する:

    コマンドがログに記録されるように、次のように入力して redis-cli を終了します。

    exit

情報の使用

slowlog を分析することで、遅いクエリを特定し、それらを最適化するための手順を実行できます。これには、次のものが含まれる場合があります。

  • より効率的なクエリに書き換える。
  • クエリで使用されるデータ構造を最適化する。
  • クエリのパフォーマンスを向上させるためにインデックスを追加する。
  • KEYS * など、遅いことが知られているコマンドを避ける。

まとめ

この実験(Lab)では、Redis のパフォーマンス監視テクニックを探求しました。まず、LATENCY DOCTOR コマンドを使用して、レイテンシの問題を診断およびトラブルシューティングしました。レイテンシとは、リクエストとレスポンスの間の遅延であることを理解しました。このコマンドは、Redis の動作を分析し、遅延の潜在的な原因に関する洞察を提供します。

この実験(Lab)では、redis-cli を使用して Redis に接続し、LATENCY DOCTOR コマンドを実行する方法を説明しました。次に、出力の解釈方法を学び、潜在的なボトルネックを特定し、遅いクエリを理解するために、SUMMARY(概要)、DETAILS(詳細)、および ADVICE(アドバイス)セクションに焦点を当てました。