AWS EC2 T3 实例在 CPU 积分耗尽后会强制降频至基准性能,导致业务响应变慢。最直接的优化方案是开启实例 Unlimited 模式或升级至更高规格实例,操作前需先通过 CloudWatch 确认 CPU 积分余额状态。
先说结论:T3 实例性能下降通常因 CPU 积分耗尽触发基准限制,开启 Unlimited 模式可立即缓解但会产生额外费用,长期高负载建议升级实例。
- 先定位:登录 CloudWatch 查看 CPUCreditBalance 是否接近 0 或 CPUSurplusCreditBalance 是否为负。
- 先做:在 EC2 控制台更改实例设置开启 Unlimited 模式,或停止实例后更改实例类型。
- 再验证:观察 CloudWatch 中 CPUUtilization 是否不再受限于基准线,且业务延迟恢复正常。
命令速用版
aws cloudwatch get-metric-statistics `--namespace` AWS/EC2 `--metric-name` CPUCreditBalance `--dimensions` Name=InstanceId,Value=i-1234567890abcdef0 `--statistics` Average `--period` 300 `--start-time` 2023-10-01T00:00:00Z `--end-time` 2023-10-01T01:00:00Z
上述命令用于查询特定实例的 CPU 积分余额历史数据,需替换 InstanceId 和时间范围。若无法使用 CLI,可直接在 AWS 控制台 CloudWatch 指标页面搜索实例 ID 查看。
为什么会这样
T3 实例采用 CPU 积分机制,空闲时积累积分,高负载时消耗积分,积分耗尽后 CPU 性能被限制在基准水平。
AWS 突发性能实例设计用于间歇性负载场景。当实例持续高负载运行,消耗的积分超过积累速度,积分余额归零后,CPU 利用率会被强制限制在该实例规格定义的基准性能百分比。此时即使操作系统内显示 CPU 空闲,实际计算能力也已受限,导致应用处理请求变慢。
分步处理
步骤 1:确认积分状态
进入 AWS 控制台 CloudWatch 服务,选择指标(Metrics),搜索实例 ID。添加 CPUCreditBalance(积分余额)和 CPUUtilization(CPU 利用率)图表。若 CPUCreditBalance 长期为 0 且 CPUUtilization 呈现周期性削峰,说明积分不足。
步骤 2:选择优化方案
方案 A(临时缓解):开启 Unlimited 模式。在 EC2 控制台选中实例,操作 -> 更改实例类型 -> 编辑 -> 勾选 Unlimited 模式。此操作无需停止实例,但超出积分部分的 CPU 使用会产生额外费用。
方案 B(长期解决):升级实例规格。若业务长期需要高 CPU,建议升级至更大规格的 T3 实例(基准更高)或非突发型实例(如 M5/C5)。此操作需要停止实例,涉及业务中断。
步骤 3:执行变更
若选择方案 A,直接保存设置生效。若选择方案 B,先停止实例,更改实例类型,再启动实例。确保安全组和网络配置未因停止启动而重置(弹性 IP 需关联)。
怎么验证是否生效
变更后 15-30 分钟,返回 CloudWatch 查看指标。若开启 Unlimited 模式,CPUSurplusCreditBalance 可能变为负值,但 CPUUtilization 应能突破原基准限制。若升级实例,基准性能提升,相同负载下积分消耗速度应变慢。
同时在操作系统内部使用 top 或 htop 命令观察负载响应速度,确认业务日志中超时错误减少。
常见坑
1. Unlimited 模式费用不可控:若业务持续高负载,超额积分费用可能超过升级实例的成本,需设置账单告警。
2. 基准性能误解:不同 T3 规格基准性能不同,小规格实例即使开启 Unlimited 模式,长期 sustained 性能仍可能不如大规格实例稳定。
3. 实例停止风险:更改实例类型必须停止实例,未配置弹性 IP 或未使用自动启动脚本可能导致业务恢复时间延长。
常见问题
开启 Unlimited 模式会立刻收费吗?
仅在 CPU 使用量超过实例基准性能所对应的积分额度时才会产生额外费用,空闲或低负载时不收费。
T3 实例和 T2 实例的积分机制有什么区别?
T3 实例默认支持 Unlimited 模式且积分累积速率更优,T2 实例需手动配置且架构较旧,建议新业务直接使用 T3。
如何避免积分耗尽导致的生产事故?
在 CloudWatch 中设置 CPUCreditBalance 告警,当余额低于阈值时发送通知,以便提前干预。
参考来源
- AWS Official Documentation, Amazon EC2 User Guide - Burstable performance instances, https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html
- AWS Official Documentation, Amazon EC2 Pricing - Burstable Performance Instances, https://aws.amazon.com/ec2/instance-types/t3/