AWS Spot Instance频繁提前驱逐 中断率远超官方预期问题咨询
AWS Spot Instance 高驱逐率问题解答
高驱逐率核心原因
你观测到的中断率远高于官方指引的<5%,核心原因是Spot Instance Advisor给出的中断率为区域级长期统计平均值,并非特定时间窗口的容量承诺,你碰到的instance-terminated-no-capacity错误直接对应对应时间点eu-west-2区域m5.large规格的Spot容量池被耗尽,常见触发场景包括:
- 同区域同规格的按需/预留实例订单短时间内暴涨,AWS会优先将空闲EC2算力分配给付费优先级更高的按需、预留实例用户,直接挤空对应规格的Spot容量池
- 你一次性批量申请40台同规格、大概率同可用区的Spot实例,本身就会短时消耗掉该可用区对应规格的绝大多数空闲Spot容量,后续只要有少量高优先级订单进入,你的Spot实例就会被优先回收
是否属于Spot的正常表现
属于极端场景下的正常表现,Spot Instance本身的服务条款不做任何容量可用性承诺,官方给出的中断率统计仅作参考,单时间窗口、单可用区的中断率出现大幅偏离统计值的情况是符合产品设计预期的。
预判&调试优化方案
可以通过以下方法大幅降低同类问题出现的概率,同时降低中断对业务的影响:
- 优先排查CloudWatch指标
SpotInterruptions,按可用区、实例规格维度聚合,确认你启动实例的可用区当时是否出现全规格级的中断飙升,如果是直接避开该可用区即可 - 批量申请Spot实例时不要只绑定单一规格、单一可用区,开启EC2 Fleet的容量优化分配策略,同时匹配至少2~3种符合算力要求的替代规格(比如m5.large、m5a.large、m6i.large、t3.large均可加入备选池),跨2个以上可用区部署,可将单时间窗口容量短缺的概率降低90%以上
- 提前调用
describe-spot-price-history接口查询目标规格近7天在对应区域各可用区的价格波动趋势,如果某可用区对应规格的价格已经连续多小时持平按需价,说明该可用区的Spot容量池已经接近饱和,尽量避开 - 为所有Spot实例配置2分钟中断通知的CloudWatch Events规则,接到中断通知后自动将任务迁移到备用实例池,最大程度降低业务中断影响
内容的提问来源于stack exchange,提问作者Michele Valotti
相关产品推荐
相关产品推荐

