我有许多在开发账户中运行的 aws ec2 实例,我看到的大多数实例的 CPU 利用率大部分时间都不会超过 5%。例如,即使在运行 kafka 的 kubernetes 集群之一中,当我们使用 t3.xlarge (16gb ram 和 4vcpu) 机器设置 kafka 集群时,它的 CPU 利用率也不超过 5% 或最高 6%。
所以我的问题是,有没有办法查明我是否真的充分利用了我们选择的实例,以便我可以将我的实例类型降级为低成本实例(如果未充分利用)。我看到了 aws 计算优化器,但它表示大多数实例都进行了优化,只有 1 或 2 个实例显示为未优化且利用率不足。
另外,大多数应用程序(例如 kafka)默认请求 8gb 内存和良好的 CPU 以实现更好的使用,但云端监控图表实际上并未显示其已被充分利用。
那么有什么方法可以解决这个问题并减少 AWS 中的 EC2 成本?
答案1
你可以试试:
- 计算机优化器
- 值得信赖的顾问
- 安装Cloudwatch 代理确保您有 RAM 指标 - 默认情况下,CW 无法查看内部指标,只能查看网络/CPU 等外部指标。观察 CPU/RAM 指标并自行判断它们是否配置过度。
- 减少实例大小并观察结果
在我看来,它们为 CPU 提供了过多的资源,但您应该检查 RAM 的使用情况。操作系统很可能将所有 RAM 用于缓存,我在 Linux“空闲”中使用的关键指标是“已使用”内存。“空闲”指标考虑了用于缓冲区/缓存的内存。
您还可以使用预留实例或储蓄计划来节省资金,但首先要正确调整实例的大小。您应该考虑自动扩展,以便 AWS 根据需要添加实例。
我的经验是大多数企业服务器都配置过度。我可以运行一个低负载的 t3a.nano,它有 512MB RAM 和 512MB 交换空间,为运行 Nginx / PHP / MySQL / 其他实用程序(如开源版 Dropbox)的六个低流量网站提供服务,而且它运行得很好。