Tair (Redis OSS-compatible) のサービスパフォーマンスに影響を与える一般的な問題は、低速リクエストによる接続タイムアウトです。 Tair (Redis OSS-compatible) のスロークエリログ機能を使用すると、これらのリクエストを送信したクライアントのIPアドレスを検索し、スロークエリログの詳細に基づいて問題をトラブルシューティングできます。
概要
スロークエリログは、指定されたしきい値よりも時間がかかるリクエストを記録します。 低速クエリログは、データノードとプロキシノードの両方で生成できます。
このトピックで提供されている低速クエリログのクエリ方法は、Redis Open-Source Edition 2.8インスタンスではサポートされていません。 コンソールで を選択すると、そのようなインスタンスのスロークエリログを表示できます。 Redis Open-Source Editionのスロークエリログには、2.8インスタンスにクライアントIPアドレスなどの情報が含まれていません。
データノードの低速クエリログ
データノードで生成される低速クエリログで収集されるコマンド実行期間には、データノードでコマンドを実際に実行するのに必要な時間のみが含まれます。 データノードがプロキシノードまたはクライアントと通信するのに必要な時間と、シングルスレッドキュー内のコマンドの実行レイテンシは含まれません。
データノードの低速クエリログは72時間保持されます。 保存できるスロークエリログの数は無制限です。
ほとんどの場合、インスタンスのパフォーマンスが高いため、データノードで生成される低速クエリログはほとんどありません。
Parameters
パラメーター | 説明 |
slowlog-log-slow-than | データノードのスロークエリログのコマンド実行時間のしきい値。 コマンドがこのしきい値を超える期間実行された場合、そのコマンドは低速クエリログに記録されます。 デフォルト値: 20000 単位:マイクロ秒。 20000マイクロ秒は20ミリ秒に等しい。 説明 ほとんどの場合、実際のレイテンシはこのパラメーターの指定された値よりも高くなります。これは、この値には、クライアント、プロキシノード、およびデータノード間でデータを送信および処理するのに必要な時間が含まれていないためです。 |
slowlog-max-len | 保存できるスロークエリログエントリの最大数。 デフォルト値: 1024。 |
詳細は、「インスタンスパラメーターの設定」をご参照ください。
プロキシノードの低速クエリログ
プロキシノードのスロークエリログで収集されるコマンド実行期間は、プロキシノードがデータノードに要求を送信した時点から開始し、プロキシノードがデータノードから応答を受信した時点で終了します。 これには、データノードでのコマンド実行期間、ネットワークを介したデータ送信の期間、およびコマンドのキューイング待ち時間が含まれます。
プロキシノードの低速クエリログは72時間保持されます。 保存できるスロークエリログの数は無制限です。
ほとんどの場合、プロキシノードの低速クエリログに記録されるレイテンシ値は、アプリケーションの実際のレイテンシに近い値です。 したがって、タイムアウトの問題をトラブルシューティングするときは、このタイプのスロークエリログをチェックすることをお勧めします。
標準インスタンスには、プロキシノードの低速クエリログは含まれません。
Parameters
パラメーター | 説明 |
rt_threshold_ms | プロキシノードのスロークエリログのコマンド実行時間のしきい値。 デフォルト値: 500。 単位:ミリ秒。 しきい値は、クライアントのタイムアウト期間 (200ミリ秒から500ミリ秒) に近い値に設定することを推奨します。 |
詳細は、「インスタンスパラメーターの設定」をご参照ください。
低速クエリログのクエリに使用されるメソッド
スロークエリログの種類 | 移動方法 |
データノードの低速クエリログ |
|
プロキシノードの低速クエリログ | コンソールにログインするか、API操作を呼び出します。 |
手順
ほとんどの場合、サービスのタイムアウトはリクエストが遅いために発生します。 タイムアウトの問題をトラブルシューティングするには、次の手順を実行することを推奨します。
サービスタイムアウトの問題が発生した場合は、まずプロキシノードで生成された低速クエリログを確認します。 詳細については、「低速クエリログの照会」をご参照ください。
説明標準インスタンスの場合は、手順3に進み、データノードからの低速クエリログを分析します。
プロキシノードに低速クエリログが存在しない場合は、クライアントとインスタンス間のネットワークを確認できます。
プロキシノードの最も早い低速クエリログによって記録されたコマンドを見つけます。
説明低速リクエストがデータノードに蓄積すると、これらのリクエストはプロキシノードの低速クエリログに記録されます。
この例では、最も早く記録された低速クエリログがKEYSコマンドによって生成されます。 ログエントリの右側のIPアドレスは、コマンドを送信するクライアントのIPアドレスです。
データノードの低速クエリログを確認して、タイムアウトの問題の原因となるプロキシノードの低速クエリログを特定します。
説明通常、プロキシノードで最初に低速クエリログを生成するコマンドは、データノードでも低速クエリログを生成します。 データノードの低速クエリログは、一般に、実行時間がどのように定義されるか、および2つのタイプのノード上の低速クエリログと見なされる閾値の違いにより、プロキシノードのものよりも少ない。
この例では、プロキシノードの低速クエリログを表示した後、KEYSコマンドによって生成された低速クエリログがデータノードにも存在することがわかります。 [プロキシ] タブに表示される他の低速クエリログは、[データノード] タブに存在しません。 これは、KEYSコマンドがタイムアウトの問題を引き起こすことを示しています。
プロキシノードの低速クエリログでは、手順2にあるコマンドに基づいて最適化のためにクライアントIPアドレスを検索できます。