🐉
ElastiCache(Redis)のCPUUtilizationが100/vCPU%を超えた件
ElastiCache(Redis)の監視について、初めて知った事があったので記事にしてみました
結論
- CPUUtilization はホストレベルのメトリクスなので、100/vCPU % を超えて CPUUtilizatioon の値が記録される場合がある
- vCPU が 2 個より多くある場合にはEngineCPUUtilization でモニタリングすることを推奨している
何が起こったか
Redisはシングルスレットのため、閾値はノードの総容量の割合として計算する
例) 2個のコアを搭載するノードタイプを使用している場合(閾値90%を想定)
CPUUtilizationのしきい値は 90%/2コア = 45%になる
しかし、ある時、cache.m5.xlarge(vCPU 4)のCPUUtilizationが30%を超過
100%/4コア = 25% と考えていたので、疑問に思いAWSに問い合わせてみた
AWSサポートからの回答
要約すると下記の回答を貰いました
-
CPUUtilization はホストレベルのメトリクスとなっており、Redis 以外にも OS 上で稼働しているプロセスも影響を与える可能性があり、100/vCPU % を超えて CPUUtilizatioon の値が記録される場合がある[1]
-
CPUUtilization ホスト全体の CPU 使用率の割合 (%)。Redis はシングルスレットであるため、4 個以上の vCPU を持つノードで EngineCPUUtilization メトリクスをモニタリングすることを推奨する[2]
[1] https://aws.amazon.com/jp/blogs/database/monitoring-best-practices-with-amazon-elasticache-for-redis-using-amazon-cloudwatch/
[2] https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/CacheMetrics.HostLevel.html
Discussion