tencent cloud

Tencent Cloud Distributed Cache (Redis OSS-Compatible)

CPU使用率の過剰な上昇

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-20 19:07:18
AI翻訳・品質チェック済み
CPU使用率の上昇はインスタンスクラスタ全体のスループットに影響を及ぼし、アプリケーションのブロッキングやタイムアウトによる中断を引き起こす可能性があります。平均CPU使用率が60%を超える場合、またはCPU平均ピーク使用率が90%を超え、かつその状態が5分以上継続する場合は、具体的な原因を速やかに調査し、的確かつ迅速に問題を解決して、業務の安定性と可用性を確保する必要があります。

現象記述

現象1:CPU使用率が高すぎるというメッセージ通知を受信しました: 
現象2:CPU使用率の監視指標が高いです。
現象3:全体のスループットが低下し、応答速度が遅くなります。

調査と解決

シーケンス番号
考えられる原因
原因分析
切り分け方法
解決方法
1
短時間接続を頻繁に確立します。
インスタンスの大量のリソースが頻繁な短時間接続の処理に消費され、CPU使用率と接続数が高くなりますが、QPS(クラスタの毎秒アクセス回数)は期待値に達していません。
DBbrainの診断最適化機能を使用して、データベースインスタンスのリアルタイムセッション統計ビューとデータを分析し、接続数が急増しているかどうかを確認します。具体的な確認方法については、リアルタイムセッションを参照してください。
短い接続を長い接続に調整してください。例えば、JedisPool接続プールを使用して接続します。具体的なコード例については、Jedis クライアントをご参照ください。
2
高時間複雑度のコマンドが存在します。例えば、sort、sunion、zunionstoreなどです。
Redisはシングルスレッドでコマンドを実行します。複雑度の高いコマンドを実行すると、他のコマンドをブロックする可能性が高くなります。コマンドの時間複雑度が高いほど、実行時により多くのリソースを消費し、CPU使用率の上昇を引き起こします。
複雑度の高いコマンドを実行すると、通常は時間がかかり、それに応じてスローログが生成されます。DBbrainの診断最適化機能を使用してスローログ分析を行い、スローログ情報リストで複雑度の高いコマンドが存在するかどうかを確認できます。具体的な操作については、スローログ分析を参照してください。
複雑度の高いコマンドを使用する場合は、毎回大量のデータを取得せず、できるだけ少量のデータを操作して、Redisがタイムリーに処理して返せるようにしてください。
3
読み書きの負荷が高すぎます。例えば、ホットKeyへの大量アクセスや大きなKeyが存在する場合です。
ホットKeyとは、一定期間内にアクセス頻度が特に高いキー値を指します。具体的なビジネスシーンでは、ホットニュース、人気ライブ配信、タイムセールスイベントなどが含まれます。大量のアクセストラフィックが1つのインスタンスに集中し、単一インスタンスの処理上限に達すると、CPU使用率の上昇を引き起こします。
DBbrainの診断最適化機能を使用してホットKey分析を行い、アクセス頻度の高いホットKeyを迅速に特定できます。具体的な操作については、ホットKey分析を参照してください。
ホットKey:複雑なデータ構造を分割し、ホットKeyを複数の新しいKeyに分割して異なるRedisノードに分散させることで、負荷を軽減します。ハッシュ型を例にすると、このホットKeyの型は2階層のデータ構造であり、このハッシュの要素数が多い可能性があるため、現在のhashを分割することを検討できます。
4
大Keyとは、特定のKeyに対応するvalueが非常に大きく、Redisの容量を大きく占有するものを指します。大Keyに関連する読み取りや削除操作を実行すると、帯域幅とCPUを著しく占有します。
DBbrainの診断最適化機能を使用して大容量Keyの調査を行い、データベースの大容量Keyによるメモリ使用状況を監視・分析できます。詳細については、メモリ分析をご参照ください。
大Key:valueが大きすぎる場合は、オブジェクトを複数のkey-valueに分割し、操作の負荷を複数のRedisインスタンスに分散できます。Keyが多すぎる場合は、hash構造による保存を参考にし、複数のKeyを1つのhash構造に保存できます。
5
読み取り負荷が高すぎて、リソースの上限に達しています。
DBbrainの診断最適化機能を使用して、データベースインスタンスの性能傾向ビューを表示し、QPSや読み書きリクエストの指標を分析して、読み取り負荷または書き込み負荷の過大によってCPU使用率が高くなっていないかどうかを確認します。詳細については、性能傾向をご参照ください。
読み取り負荷が高い:レプリカ数を増やすことで読み取り負荷を分散します。レプリカの読み取り専用を有効にし、現在のインスタンスの読み取りリクエストをレプリカ読み取り専用ノードに移行することで、読み取り能力を柔軟に拡張し、読み書き性能を向上させます。具体的な操作については、レプリカ読み取り専用をご参照ください。
6
書き込み負荷が過大で、メモリ容量が不足しています。
書き込み負荷が大きすぎる:シャード数を増やすことで書き込み負荷を分散できます。インスタンスが標準アーキテクチャの場合は、標準アーキテクチャからクラスタアーキテクチャへのアップグレードを優先して行い、CPU処理能力を向上させてください。具体的な操作については、インスタンスアーキテクチャのアップグレードをご参照ください。クラスタアーキテクチャへアップグレードする前に互換性を確認する必要があります。詳細については、標準アーキテクチャからクラスタアーキテクチャへの移行チェックをご参照ください。
7
同一時点で大量のKeyが失効します。
Keyの有効期限が同じ時点に設定されていると、有効期限に達した時点で、RedisはKeyの削除スレッドを処理するために大きなCPUリソースを占有し、一時的なラグを引き起こします。
コンソールのシステム監視ページで、指標key有効期限切れ数を確認し、特定の時点で大量のKeyが期限切れになっていないかどうかを確認します。具体的な操作については、5秒監視更新説明を参照してください。
ビジネスロジック内で、有効期限を分散させ、Keyが集中して期限切れになることを回避してください。
8
DBを頻繁に切り替えます。つまり、selectコマンドを頻繁に実行してDBを切り替えます。
DBを頻繁に切り替えると、リソースに過度なオーバーヘッドが生じます。
DBbrainの遅延分析機能を使用して、コマンド分析でselectコマンドの監視データを確認し、selectリクエストが多い現象が発生しているかどうかを確認します。具体的な確認方法については、コマンド分析をご参照ください。
異なる業務を保存する場合、DBを頻繁に切り替える業務については、分けて保存することをお勧めします。
同じ業務を保存する場合、Key名が競合しないことを前提として、データを同じDBに保存し、selectリクエストの操作回数を減らすことを検討します。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック