ご利用の Tair (Redis OSS-compatible) インスタンスで高レイテンシやタイムアウトが発生した場合、スロークエリログを参照することで、どのコマンドが実行時間のしきい値を超えたかを特定し、根本原因を突き止めるのに役立ちます。ログはデータノードとプロキシノードの 2 つのレベルで生成され、それぞれリクエストのライフサイクルの異なる部分を測定します。
Redis コミュニティ版 2.8 インスタンスでは、スロークエリログはサポートされていません。 2.8 インスタンスのスローログを表示するには、コンソールで [CloudDBA] > [スロークエリ] に移動します。 2.8 インスタンスのスローログには、クライアント IP アドレスは含まれていません。
スロークエリログの仕組み
Tair は 2 つのソースからスロークエリログを生成します。各ソースは実行時間を異なる方法で測定し、それぞれ異なる診断目的を果たします。
| ログソース | 持続時間の測定対象 | 保持期間 | 推奨用途 |
|---|---|---|---|
| データノード | データノード上でのコマンド実行時間のみ。ネットワーク転送とキューイングレイテンシは含まれません。ほとんどの場合、インスタンスのパフォーマンスが高いため、データノードで生成されるスロークエリログは少数です。 | 72 時間 | エンジンレベルでの低速コマンドの特定 |
| プロキシノード | プロキシがリクエストをデータノードに送信してから応答を受信するまでの時間。コマンド実行、ネットワーク転送、キューイングレイテンシが含まれます。 | 72 時間 | タイムアウト問題のトラブルシューティング (実際のアプリケーションのレイテンシに近い) |
両方のログソースのストレージは無制限です。
標準インスタンスでは、プロキシノードのスローログは利用できません。
パラメーター
データノードのパラメーター
| パラメーター | デフォルト値 | 単位 | 説明 |
|---|---|---|---|
slowlog-log-slower-than | 20000 | マイクロ秒 | この値よりも実行時間が長いコマンドがログに記録されます。20000 マイクロ秒は 20 ミリ秒に相当します。この値にはネットワークおよびキューイングレイテンシが含まれないため、実際のエンドツーエンドレイテンシは通常これより高くなります。 |
slowlog-max-len | 1024 | — | 保存されるスロークエリログエントリの最大数。 |
プロキシノードのパラメーター
| パラメーター | デフォルト値 | 単位 | 説明 |
|---|---|---|---|
rt_threshold_ms | 500 | ミリ秒 | この値よりも実行時間が長いコマンドがログに記録されます。この値は、クライアントのタイムアウト期間に近い値 (通常は 200~500 ミリ秒) に設定します。 |
これらのパラメーターを変更する方法については、「インスタンスパラメーターの設定」をご参照ください。
コンソールでのスローログの表示
コンソールにログインし、インスタンスページに移動します。上部のナビゲーションバーでインスタンスが存在するリージョンを選択し、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、[ログ] > [スローログ] を選択します。
[スローログ] ページで、時間範囲またはキーワードでログをフィルターします。クラスターインスタンスおよび読み書き分離インスタンスの場合は、ノードタイプとノード ID でフィルターすることもできます。
デフォルトでは、クラスターインスタンスおよび読み書き分離インスタンスの場合、[ホストアドレス] フィールドにはプロキシノードの IP アドレスが表示されます。クライアントの IP アドレスを代わりに表示するには、[パラメーター設定] で
ptod_enabled1インスタンスパラメーターの設定」をご参照ください。初期のインスタンスでは、デフォルトでプロキシノードの IP アドレス (11 で始まる IP アドレス) が表示されます。
ptod_enabledを1に設定すると、プロキシノードはクライアントの送信元 IP アドレスをバックエンドのデータノードに渡します。このパラメーターの変更はすぐに有効になります。インスタンスを再起動する必要はありません。
コンソールで
ptod_enabledパラメーターが見つからない場合は、インスタンスをこのパラメーターをサポートする新しいマイナーバージョンにアップグレードしてください。Redis コミュニティ版 7.0: 7.0.1.2 以降。
Redis コミュニティ版 6.0: 6.0.2.0 以降。
Community Edition 5.0: 5.2.0 以降 (クラウドネイティブインスタンスの場合は 5.5.2.0 以降)。
無関係なスローログエントリ
一部のエントリは、実際のコマンドのパフォーマンスではなく、内部エンジンの動作を反映しています。以下のエントリは無視してかまいません。
| エントリ | 説明 |
|---|---|
latency:eventloop | Tair (Redis OSS-compatible) はイベント駆動モードで動作します。イベントループは、読み取り、解析、コマンドの実行、結果の返却をカバーします。latency:eventloop の持続時間は、1 つのイベントループサイクルにかかる合計時間を反映します。 |
latency:pipeline | パイプラインモードでは、クライアントはコマンドを送信し、応答をバッチで受信します。クラスターインスタンスの場合、プロキシノードはパイプラインモードを使用して、リクエストをバッチでバックエンドのデータノードに送信します。latency:pipeline の持続時間は、パイプラインバッチ内のすべてのリクエストを処理するための合計時間を反映します。 |
latency:fork | latency:fork の持続時間は、子プロセスをフォークする時間を反映します。データセットが大きいほど、フォーク時間は長くなります。 |
API リファレンス
| 操作 | 説明 |
|---|---|
| DescribeSlowLogRecords | 指定された時間範囲内のインスタンスのスロークエリログを取得します。 |