0Pricing
AWS Solutions Architect · 课时

调整资源规格与 Compute Optimizer

使用 AWS Compute Optimizer 的建议缩减配置过度的 EC2 实例、Lambda 函数和 EBS 卷,以降低成本

调整资源规格与 Compute Optimizer 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。

过度配置问题

云架构中最常见且代价高昂的错误之一是过度配置——分配的资源超过工作负载的实际需求。IT 团队经常因为本地部署环境的习惯(为峰值负载购买容量)、担心性能下降,或者从未重新审视最初的规格决策而进行过度配置。在 AWS 中,过度配置的 EC2 实例、EBS 卷和 Lambda 函数每运行一分钟都会浪费资金。资源规格优化是系统识别并消除这类浪费的过程。

# Common over-provisioning symptoms:
# EC2: average CPU < 10%, memory < 20%
# RDS: storage auto-grow never triggered
# Lambda: allocated memory rarely exceeds 40%
# EBS: provisioned IOPS consistently unused

# Cost impact example:
# Over-provisioned r5.8xlarge at $1.92/hr: $1,382/month
# Correct size r5.xlarge at $0.252/hr:      $181/month
# Savings: $1,201/month per instance

AWS Compute Optimizer 概览

AWS Compute Optimizer 会分析来自 CloudWatch 的历史利用率指标,并利用机器学习推荐最优的 AWS 计算资源。它涵盖EC2 实例、EC2 autoScalingGroup、EBS 卷、Lambda 函数以及基于 Fargate 的 Amazon ECS。Compute Optimizer 至少需要 30 天的指标历史记录,才能生成可信的建议。启用该服务免费,并会提供包含预计月度节省金额和变更风险评级的建议。

# Opt in to Compute Optimizer
aws compute-optimizer update-enrollment-status \
  --status Active

# Get EC2 recommendations
aws compute-optimizer get-ec2-instance-recommendations \
  --query 'instanceRecommendations[].{Instance:currentInstanceType,Recommended:recommendationOptions[0].instanceType,Savings:recommendationOptions[0].estimatedMonthlySavings.value,Risk:recommendationOptions[0].performanceRisk}'

# Get Lambda recommendations
aws compute-optimizer get-lambda-function-recommendations

使用 Compute Optimizer 优化 EC2 资源规格

Compute Optimizer 会分析 EC2 在过去 3 天、14 天或 30 天以上的CPU 利用率、内存利用率(通过 CloudWatch 代理获取)、网络吞吐量和EBS IOPS。随后,它会生成四种发现结果之一:已优化(当前规格适当)、过度配置(可以缩小规格)、配置不足(应扩大规格)或未优化(数据不足)。请始终查看性能风险——Compute Optimizer 会为每条建议分配 VeryLow、Low、Medium、High 风险等级。

# EC2 recommendation findings:
# Finding: OVER_PROVISIONED
# CurrentInstanceType: m5.4xlarge
# RecommendedInstanceType: m5.xlarge
# CPU utilisation: P99 = 22%, P50 = 4%
# Memory utilisation: P99 = 18%, P50 = 8%
# EstimatedMonthlySavings: $380
# PerformanceRisk: VeryLow

# Always check:
# - Does current instance have burstable credits? (T3)
# - Are there workload spikes not captured in averages?
# - Is there seasonality to consider?

优化 Lambda 资源规格

Lambda 函数按照执行时间(精确到毫秒)乘以分配的内存计费。分配超过需求的内存会浪费资金,但更多内存也意味着更多 CPU,因此最佳平衡点是使每次调用成本最低的内存设置。Compute Optimizer 会分析 Lambda 调用时长、错误率和超时指标,以推荐最佳内存设置。开源工具 Lambda Power Tuning 还可以在不同内存设置下调用您的函数,通过实际测试找出成本最优的配置。

# Compute Optimizer Lambda recommendations
aws compute-optimizer get-lambda-function-recommendations \
  --function-arns arn:aws:lambda:us-east-1:123:function:my-function

# Response shows:
# currentMemorySize: 1024 MB
# recommendedMemorySize: 256 MB
# utilizationMetrics:
#   - type: MEMORY_MAXIMUM, value: 89 (MB)
# estimatedMonthlySavings: $45

# 89 MB actual vs 1024 MB allocated = 935 MB wasted

优化 EBS 卷规格

EBS 卷经常在大小(未使用的磁盘空间)和IOPS(从未被消耗的预配置 IOPS)两个方面过度配置。Compute Optimizer 会分析 VolumeReadOps、VolumeWriteOps、VolumeReadBytes、VolumeWriteBytes 指标。常见建议是:从 gp2 迁移到 gp3(将大小与 IOPS 分离),这样可以独立优化 IOPS,通常可节省 20%。此外,还应识别未连接的 EBS 卷(实例已终止但卷仍被遗留),并将其创建快照或删除。

# Get EBS volume recommendations
aws compute-optimizer get-ebs-volume-recommendations \
  --volume-arns arn:aws:ec2:us-east-1:123:volume/vol-12345

# Common finding: gp2 -> gp3 migration
# gp2: 500 GB = 500 GB * $0.10 = $50/month
#   IOPS: 1,500 (3 IOPS/GB, not configurable)
# gp3: 500 GB = $40/month + 3,000 IOPS free
#   Save $10/month plus get MORE baseline IOPS

# Find unattached EBS volumes
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[].{VolumeId:VolumeId,Size:Size,Created:CreateTime}'

autoScalingGroup 建议

Compute Optimizer 会分析整个 autoScalingGroup 中所有实例的利用率,并针对实例类型推荐启动模板更改。如果某个 autoScalingGroup 中的所有实例始终处于过度配置状态,切换到更小的实例类型可以大规模降低成本。例如,如果某个 autoScalingGroup 平均运行 10 个 m5.large 实例,切换到 m5.medium 可使每个实例节省 50%。当您的软件兼容时,Compute Optimizer 还会推荐基于 Graviton 的实例,同时带来性能提升和成本降低。

# Get ASG recommendations
aws compute-optimizer get-auto-scaling-group-recommendations \
  --auto-scaling-group-arns arn:aws:autoscaling:us-east-1:123:autoScalingGroup:abc:autoScalingGroupName/my-asg

# If recommendation is to switch to Graviton:
# Current: m5.large (x86, $0.096/hr)
# Recommended: m6g.large (Graviton2, $0.077/hr)
# Savings: 20% per instance
# ASG at 10 instances average = $220/month savings

Trusted Advisor 成本洞察

AWS Trusted Advisor 除了提供安全性、性能、容错能力和服务限额检查外,还能提供成本优化洞察。关键成本检查包括:低利用率 EC2 实例(连续 4 天以上 CPU 利用率低于 10%)、未关联的 Elastic IP Addresses(未连接时仍会收费)、利用不足的 EBS 卷、空闲的负载均衡器(没有运行状况正常的目标)以及未使用的 Reserved Instances。Trusted Advisor 的基本检查免费;完整检查集需要 Business 或 Enterprise Support。

# Trusted Advisor: get cost optimisation checks
aws support describe-trusted-advisor-checks \
  --language en \
  --query 'checks[?category==`cost_optimizing`].{Name:name,Id:id}'

# Key checks:
# Qkj5MU5fNp: Low utilisation EC2 instances
# Z4AUBRNSmh: Unassociated Elastic IP addresses
# DAvU99Dc4C: Underutilized EBS volumes
# hjLMh88uM8: Idle load balancers
# 1e93e4c0b5: Unused reserved instances

实例代际升级

AWS 会定期发布更高效的新一代 EC2 实例,以更低或相同的成本提供更好的性能。从第 5 代(m5、c5、r5)迁移到第 7 代(m7g、c7g、r7g),可以在相近或更低的成本下获得 40% 的计算性能提升。Compute Optimizer 会专门标记升级到新一代实例(包括基于 Graviton 的实例)的机会。实例升级通常是最简单的资源规格优化措施——配置不变,硬件更新,性能更好,成本更低。

# EC2 instance generation comparison (same price tier):
# m5.large:  2 vCPU, 8 GB, $0.096/hr  (2019)
# m6i.large: 2 vCPU, 8 GB, $0.096/hr  (2021, ~10% faster)
# m7i.large: 2 vCPU, 8 GB, $0.1008/hr (2023, ~15% faster)
# m7g.large: 2 vCPU, 8 GB, $0.0808/hr (2023, Graviton3, cheapest)

# Upgrade path for Linux workloads:
# m5 -> m7g (Graviton): best price/performance
# m5 -> m7i: same architecture, no code changes

优化 RDS 实例规格

RDS 实例价格较高,而且经常存在过度配置。请使用 CloudWatch 指标评估 RDS 利用率:CPUUtilization、FreeableMemory、ReadIOPS 和 WriteIOPS。如果 CPU 持续低于 20%,且内存始终保持较高水平,请考虑缩小规格。对于启用了 Multi-AZ 的生产数据库,优化规格可以使节省金额翻倍,因为主实例和备用实例都会更换规格。此外,还可以考虑从 RDS MySQL/PostgreSQL 切换到 Aurora,这样通常能以相近的成本提供更好的性能,并且在大规模运行时更具成本效益。

# Monitor RDS utilisation for right-sizing
aws cloudwatch get-metric-statistics \
  --namespace AWS/RDS \
  --metric-name CPUUtilization \
  --dimensions Name=DBInstanceIdentifier,Value=mydb \
  --start-time 2026-05-21T00:00:00Z \
  --end-time 2026-06-21T00:00:00Z \
  --period 86400 \
  --statistics Maximum Average

# If 30-day P99 CPU < 30%, consider downsizing
# If P99 CPU > 80%, consider upsizing

将资源规格优化流程化

资源规格优化应当是持续进行的流程,而不是一次性工作。请建立每月或每季度的评审周期:获取 Compute Optimizer 建议,评估哪些建议可以安全应用,在维护时段实施更改,并衡量节省金额。对于容易实现的优化,可以进行自动化:清理未连接的 EBS 卷、释放未使用的 Elastic IP,以及移除空闲的负载均衡器都可以编写脚本实现。请在 CloudWatch 中创建成本优化控制面板,按服务跟踪每月支出,并突出显示异常增长。

# Script to release unassociated Elastic IPs
aws ec2 describe-addresses \
  --query 'Addresses[?!AssociationId].AllocationId' \
  --output text | xargs -I {} \
  aws ec2 release-address --allocation-id {}

# Script to delete unattached EBS volumes (careful!)
# First check if snapshots exist before deleting
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[].VolumeId' \
  --output text

资源规格优化与架构更改

资源规格优化可以解决现有架构中的过度配置问题,但有时问题本身在于架构。一个运行多个应用的大型 EC2 实例,可能需要进行架构拆分(在 Fargate 上运行微服务),而不仅仅是换用更小的实例。单体数据库可能需要分片或缓存,而不只是缩小实例规格。资源规格优化是第一步,也是最快的一步。架构优化(无服务器、容器、缓存)能够带来更深入且更持久的节省,但需要付出更多努力。Cost Optimisation 支柱建议同时推进这两方面。

# Cost optimisation hierarchy:
# Level 1: Right-sizing (quick wins, days)
#   - Compute Optimizer recommendations
#   - Delete unused resources
#   - Elastic IP, EBS cleanup

# Level 2: Purchasing model (weeks)
#   - Reserved Instances / Savings Plans
#   - Spot for eligible workloads

# Level 3: Architecture (months)
#   - Serverless migration
#   - Container consolidation
#   - Caching layer addition
#   - Database optimisation

快速检查

测试您对本课中 AWS Solutions Architect(SAA-C03)概念的理解。

课程回顾

在本课中,您学习了:AWS Compute Optimizer 会利用 CloudWatch 指标进行机器学习,以推荐经过资源规格优化的计算资源;资源规格优化适用于 EC2、Lambda、EBS、ASG 以及 Fargate 上的 ECS;以及升级到更新的实例代际(尤其是 Graviton)可以同时改善成本和性能。请将资源规格优化作为持续实践,而不是一次性工作。接下来,我们将学习 Reserved Instances、Savings Plans 和 Spot 购买模式。

常见问题解答

「调整资源规格与 Compute Optimizer」课时是免费的吗?

是的 — 「调整资源规格与 Compute Optimizer」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。

「调整资源规格与 Compute Optimizer」这节课中我会学到什么?

使用 AWS Compute Optimizer 的建议缩减配置过度的 EC2 实例、Lambda 函数和 EBS 卷,以降低成本 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AWS Solutions Architect 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「调整资源规格与 Compute Optimizer」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AWS Solutions Architect 课中编写并运行代码吗?

能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 调整资源规格与 Compute Optimizer
  2. 预留实例、Savings Plans 与 Spot
  3. Cost Explorer、预算与成本分配标签
  4. S3 与数据传输成本优化
← 返回 AWS Solutions Architect