🐉

ElastiCache(Redis)のCPUUtilizationが100/vCPU%を超えた件

2022/05/25に公開

ElastiCache(Redis)の監視について、初めて知った事があったので記事にしてみました

結論

  • CPUUtilization はホストレベルのメトリクスなので、100/vCPU % を超えて CPUUtilizatioon の値が記録される場合がある
  • vCPU が 2 個より多くある場合にはEngineCPUUtilization でモニタリングすることを推奨している

何が起こったか

Redisはシングルスレットのため、閾値はノードの総容量の割合として計算する

例) 2個のコアを搭載するノードタイプを使用している場合(閾値90%を想定)
CPUUtilizationのしきい値は 90%/2コア = 45%になる

https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/red-ug/CacheMetrics.WhichShouldIMonitor.html#metrics-cpu-utilization

しかし、ある時、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