Tair (Redis OSS-compatible) のインスタンスのメモリ使用量が突然急増した場合、このトピックを参照して問題のトラブルシューティングを行うことができます。
問題の内容
Tair (Redis OSS-compatible) のインスタンスでは、メモリ使用量が突然大幅に増加し、100% に達することさえあります。
発生原因
メモリ使用量の急激な増加は、次の理由が原因である可能性があります。
大量の新しいデータが短時間で書き込まれる。
短時間で多数の新しい接続が確立されます。
バーストアクセスでは、ネットワーク帯域幅を超える大量のトラフィックが生成され、その結果、入力バッファと出力バッファにバックログが発生します。
クライアントはTair (Redis OSS互換) の処理速度に追いつくことができず、出力バッファにバックログが発生します。
ソリューション
メモリ使用量の突然の増加の原因を特定し、提案されたソリューションを使用して問題を解決します。
大量の新しいデータが書き込まれているかどうかを確認する
トラブルシューティング方法:
[パフォーマンスモニター] ページで、インスタンスのインバウンドトラフィックと1秒あたりの書き込みクエリ (QPS) を確認します。 インバウンドトラフィックと書き込みQPSがメモリ使用量と同じ傾向にある場合、メモリ使用量の急激な増加は、大量の書き込みデータが原因です。
解決策:
キーに適切な有効期間 (TTL) 値を設定して、不要になったキーを自動的に削除したり、不要なキーを手動で削除したりします。
メモリ使用量の急激な増加を緩和するために、メモリ容量を増やしてインスタンス仕様をアップグレードします。 詳細については、「インスタンスの設定の変更」をご参照ください。
インスタンスが標準インスタンスで、メモリ容量を増やした後もメモリ使用量が多い場合は、インスタンスをクラスターインスタンスにアップグレードできます。 これにより、複数のデータシャードにデータを分散して、個々のデータシャードのメモリ負荷を軽減できます。 詳細については、「インスタンスの設定の変更」をご参照ください。
多数の新しい接続が確立されているかどうかの確認
トラブルシューティング方法:
[パフォーマンスモニター] ページで、インスタンスへの接続数。 接続数が突然増加し、メモリ使用量と同じ傾向に従う場合、メモリ使用量の突然の増加は、多数の新しい接続が原因です。
解決策:
接続リークが存在するかどうかを確認します。
アイドル接続を自動的に閉じるように接続タイムアウト期間を設定します。 詳細については、「クライアント接続のタイムアウト期間の指定」をご参照ください。
バーストトラフィックが入力バッファと出力バッファでバックログを引き起こすかどうかを確認する
トラブルシューティング方法 :
インスタンスのインバウンドトラフィックとアウトバウンドトラフィックの使用量が100% に達しているかどうかを確認します。
MEMORY STATS
コマンドを実行して、clients.normalが過剰なメモリを占有しているかどうかを確認します。説明clients.normalは、すべての通常のクライアント接続で入力バッファと出力バッファによって使用されるメモリの総量を反映します。
解決策:
トラフィックバーストの原因を確認します。
インスタンスのネットワーク帯域幅を増やします。 詳細については、「インスタンスの帯域幅を手動で増やす」および「帯域幅自動スケーリングの有効化」をご参照ください。
インスタンス仕様をアップグレードして、入力バッファと出力バッファの最適な使用を確保します。 詳細については、「インスタンスの設定の変更」をご参照ください。
クライアント側のパフォーマンスの問題により出力バッファにバックログが発生するかどうかを確認する
トラブルシューティング方法:
redis-cliで、MEMORY DOCTOR
コマンドを実行して、big_client_buf
の値を表示します。 big_client_bufが1に設定されている場合、少なくとも1つのクライアントに大量のメモリを消費する大きな出力バッファがあります。
解決策:
CLIENT LIST
コマンドを実行して、大量のメモリ (omem
) を消費する大容量の出力バッファがあるクライアントを確認します。 クライアントアプリケーションにパフォーマンスの問題があるかどうかを確認します。