2016-12-15 11 views
1

私たちのアプリケーションにはAWS Elasticacheが使用されています。最初に推奨されたしきい値に基づいて、CPUアラームしきい値を22%(4つのコアノード、したがって事実上90%のCPU使用率)に設定しました。しかし、CPU利用率が28%、34%などの値に25%を超えていることがよくあります。AWS ElasticacheのCPU使用率が100%を超えています

Redisがシングルスレッドであると考えると、これは理論的にどのように考えられるのですか?これが起こりうると私が考えることができる唯一の方法は、他のコアでメンテナンスが行われている場合で、CPU使用率が25%を超えてしまう場合があります。クラスタの負荷が高い場合でも、CPU使用率を25%に抑え、おそらくクライアントのタイムアウトを開始する必要があります。誰かが、シングルスレッドのRedisインスタンスのCPU使用率が100%のCPU使用率を超えてどのようなシナリオを理解できるか教えてください。

答えて

1

Redisイベントループはシングルスレッドです。 Redisプロセス自体はそうではありません。いくつかのI/Oバウンド操作をオフラインにするための余分なスレッドが2つあります。今、これらのスレッドはCPUを消費すべきではありません。

しかし、Redisでは、AOFリライトやRDBの保存などの大量の操作を子プロセスが処理することもあります。フォークされた各プロセスは、通常、Redisイベントループ消費量の上に、CPUコアの100%を消費します(I/Oによって動作が遅くなる場合を除く)。

CPU消費量が定期的に高い場合は、AOFとRDBの設定が正しくない(RedisインスタンスがAOFを書き換えたり、あまりにも頻繁にダンプを生成する)可能性があります。

関連する問題