検出されたブロッキング
オンライン アプリケーション サービスが最初にこれを検出し、アプリケーション側に異常な統計を追加し、電子メールで警告できます。 、SMS、WeChat 。
ログ システムを使用して例外をカウントし、アラーム ロジックをトリガーする
Redis 監視システムを使用して、ブロックされている問題を検出し、アラームをトリガーします。推奨される CacheCloud システム。
内部的な理由
API またはデータ構造の不合理な使用
高同時実行シナリオの場合は、大きなオブジェクトのコマンドの実行を避けてください。そのアルゴリズムの複雑さは O(n)O(n) を超えています。
遅いクエリが見つかりました:slowlog get {n}
大きなオブジェクトが見つかりました: redis-cli -h{ip} -p{port} bigkeys
CPU 飽和
CPU 飽和とは、シングルコア CPU を 100% まで実行している Redis を指します。
先頭のコマンドは、redis プロセスの CPU 使用率をチェックします。
redis-cli -h{ip} -p{port} –stat は、現在の Redis 使用量を取得し、同時実行数が到達したかどうかを判断します。制限
info commandstats 分析コマンドは不当な時間を消費し、過度のメモリ最適化が行われる可能性があります
#永続性ブロック
1. フォーク ブロック RDB で発生するか、AOF が書き換えられると、Redis メインスレッドは fork を呼び出して子プロセスを生成し、永続ファイルの書き換えを完了します。info stats コマンドを使用して、最新の fork 操作が行われたことを示す lastest_fork_usec インジケーターを取得します。 redis の処理に時間がかかりました2. AOF によるディスク ブラッシングのブロックAOF を有効にすると、ファイル ディスクのフラッシュは通常 1 秒に 1 回行われます。ハードディスクの圧力が高すぎる場合、fsync は待機する必要があります。書き込みを完了するには #Redis ログまたは情報永続統計の aof_layed_fsync インジケーターを確認してくださいiotop を使用できる場合、どのプロセスがハードディスク リソースを大量に消費する可能性がありますか? 3. HugePage 書き込み操作のブロック透過的 HugePages を有効にするオペレーティング システムの場合、各書き込みコマンドにより、メモリ ページ ユニットを 4KB から 2MB にコピーすると、書き込み操作の実行時間が遅くなり、書き込み操作が遅くなります。多数の書き込み操作でクエリの速度が低下するため 外部理由CPU 競合
1. プロセスの競合: redis は典型的な CPU 集中型アプリケーションです。 top および sar コマンドを使用して、CPU 消費の時点とプロセスを特定します
2. CPU のバインド: 一般的な最適化は、redis プロセスを CPU にバインドすることで、CPU コンテキスト切り替えのオーバーヘッドを削減します。 CPU がバインドされている場合、親プロセスと子プロセスの間で激しい CPU 競合が発生し、redis の安定性に大きな影響を与えます。メモリ スワップ
オペレーティング システムが Redis が使用するメモリをハード ディスクにスワップアウトすると、スワップ後の Redis のパフォーマンスが急激に低下します。
redis メモリ交換を特定するための確認方法: 1. Redis プロセス番号を問い合わせredis-cli info server | grep process_id
cat /proc/{process_id}/smaps | grep Swap
ネットワークの問題
) 1. 接続の拒否
ネットワークの中断: 通常、ネットワークのカットオーバーまたは帯域幅の枯渇の場合Redis 接続の拒否:接続数に達した場合に新しい接続を拒否します。 maxclients よりも大きいです。 接続が入力されると、情報統計の拒否接続インジケーターが表示されます。 クライアントが redis にアクセスするときは、NIO の長い接続または接続プールを使用してください。redis は、大規模な接続が必要なシナリオで使用されます。アクセスされる分散ノードの数が多く、ライフサイクルが短い (Map/Reduce など) ため、redis が無効な接続をアクティブにチェックして閉じることができるように tcp-keepalive および timeout パラメーターを設定することをお勧めします。 接続オーバーフロー: プロセス制限: プロセスが開くことができるファイルの最大数は制御されます。ulimit -n、通常は 1024、接続数が多い Redis ではこの値を増やす必要があります バックログ キューオーバーフロー: システムはバックログ キューを使用して特定のポート上の TCP 接続を保存します。redis のデフォルトは 511、システム バックログのデフォルトは 128、cron はオンラインで使用できます。定期的に netstat -s | grep overflowedstatistics2 を実行してください。 . ネットワーク遅延マシン間のネットワーク遅延を測定しますredis-cli -h{ip} -p{port} –latency redis-cli -h{ip} -p{port} –latency-history 默认15秒完成一行统计,-i控制采样时间 redis-cli -h{ip} -p{port} –latency-dist 统计图展示,每1秒采样一次
redis 入門チュートリアル
列に注目してください。以上がRedis がブロックされる原因の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。