面对业务流量的波峰波谷,手动管理实例效率低下,且响应不及时,可能导致服务过载或资源闲置。EAS 水平自动扩缩容功能可根据实时业务负载自动调整实例数量,在保障服务稳定性的同时最大化资源利用率,实现成本与性能的最佳平衡。
工作原理
水平自动扩缩容功能基于设定的指标阈值动态调整实例数。
计算目标实例数:目标实例数(desiredReplicas)由当前实例数(currentReplicas)、当前指标值(currentMetricValue)与阈值(desiredMetricValue)的比值共同决定。
公式:
desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]示例:假设当前2个实例,实例QPS伸缩阈值设置为10。当实例平均QPS量上升至23时,目标实例个数为
5 = ceil[2 * (23/10)];后续实例平均 QPS 降至2,则目标实例个数为1 = ceil[5 * (2/10)]。缩容过程相对平滑,避免因请求波动引起异常缩容。配置多指标:系统会为每个指标计算期望的实例数,并取其中的最大值作为最终目标实例数。
触发逻辑:当计算出的目标实例数大于当前实例数,系统即触发扩容。当计算出的目标实例数小于当前实例数,系统才会触发缩容。
延迟生效:扩缩容操作支持延迟生效机制,避免因短暂流量波动导致频繁伸缩。
操作指南
可以通过控制台或客户端(eascmd)来配置水平自动扩缩容策略。
开启/更新水平自动扩缩容功能
通过控制台
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
在服务列表中,单击目标服务名称,进入服务详情页面。
切换到自动伸缩页签,在弹性伸缩区域,单击开启弹性伸缩或更新。


在自动弹性扩缩容设置对话框,参考以下参数说明配置。
参数说明
基础配置
参数
说明
设置建议与风险提示
最小实例数
服务实例自动缩容的下限数量,最小值为0。
生产环境建议:对于需要持续在线的服务,强烈建议将此值设置为
1或更高。重要设置为
0意味着在无流量时服务实例将被完全回收。此时新请求将面临完整的冷启动延迟(可能长达数十秒至数分钟),期间服务不可用。此外,使用专属网关的服务不支持将此值设为0。最大实例数
服务实例自动扩容的上限数量。最大为 1000。
请根据业务峰值预估和账户配额合理设置,以防意外的流量高峰导致费用超出预算。
常规扩缩容指标
用于触发扩缩容的内置性能指标。
单实例QPS伸缩阈值:建议基于压测结果设置,通常为单实例最优性能的 70%-80%。
CPU利用率阈值:过低易浪费资源,过高可能影响请求延迟。建议根据RT指标来设置。
GPU利用率阈值:建议根据RT指标来设置。
异步队列长度:仅适用于异步服务。建议根据任务平均处理时长和可接受的延迟来设定。更多请参见异步推理服务配置水平自动扩缩容。
自定义扩缩容指标
可以上报自定义指标并据此进行扩缩容,详情请参见自定义监控及扩缩容指标。
适用于内置指标无法满足业务需求的复杂场景。
高级配置
参数
说明
设置建议与风险提示
扩容生效时长
扩容决策的观察窗口。触发扩容后,系统会在此段时间内观察指标,若指标值回落至阈值以下,则取消本次扩容。单位为秒。
默认值为
0秒,即立即执行扩容。适当增加此值(如 60 秒)可避免因瞬时毛刺流量引发不必要的扩容。缩容生效时长
缩容决策的观察窗口,是防止服务抖动的关键参数。系统会确认指标值在此段时间内持续低于阈值后,才执行缩容。单位为秒。
默认值为
300秒。此值是防止服务因流量波动而频繁缩容的核心保障。不建议设置过小,以免影响服务稳定性。缩容到0的生效时长
当最小实例数设为
0时,此参数定义了从满足缩容条件到实例数缩减至0的等待时间。用于延迟服务彻底下线的时间,为可能的流量恢复提供缓冲。
从0扩容的实例数
服务从
0个实例冷启动时,一次性扩容到的实例数量。建议设置为一个能应对初始流量冲击的合理值,以缩短冷启动期间的服务不可用时间。
通过客户端
在执行命令前,请确保已完成下载并认证客户端。开启与更新使用相同的autoscale命令。可以通过命令的-D参数或JSON配置文件来设置策略。
参数形式:
# 格式:eascmd autoscale [region]/[service_name] -D[attr_name]=[attr_value] # 示例:设置最小2实例,最大5实例,QPS阈值为10 eascmd autoscale cn-shanghai/test_autoscaler -Dmin=2 -Dmax=5 -Dstrategies.qps=10 # 示例:设置缩容生效时长为100秒 eascmd autoscale cn-shanghai/test_autoscaler -Dbehavior.scaleDown.stabilizationWindowSeconds=100配置文件形式:
# 步骤1: 创建配置文件(例如 scaler.json) # 步骤2: 执行命令 eascmd autoscale [region]/[service_name] -s [desc_json] # 示例 eascmd autoscale cn-shanghai/test_autoscaler -s scaler.json
配置示例
以下是一个包含所有常用配置项的 scaler.json 完整示例:
参数说明
参数 | 说明 |
| 最小实例数。 |
| 最大实例数。 |
| 扩缩容指标及阈值。 |
| 对应控制台的扩容生效时长。 |
| 对应控制台的缩容生效时长。 |
关闭水平自动扩缩容功能
通过客户端
命令格式
eascmd autoscale rm [region]/[service_name]使用示例
eascmd autoscale rm cn-shanghai/test_autoscaler
生产应用建议
场景化配置指南
CPU 密集型在线推理服务:建议同时配置CPU利用率阈值和单实例QPS伸缩阈值。 CPU利用率反映资源消耗, QPS反映业务负载,二者结合可实现更精准的扩缩容。
GPU 密集型在线推理服务:建议主要关注GPU利用率。当 GPU 计算单元饱和时,及时扩容以处理更多并发任务。
异步任务处理服务:建议使用异步队列长度作为核心指标。当队列中积压的任务数超过阈值时,扩容实例可提高整体处理能力,缩短任务等待时间。
稳定性最佳实践
避免缩容到零:对于生产环境的同步服务,请务必将最小实例数设置为
1或更高,以保证服务的持续可用性和低延迟。合理设置冷静期:使用缩容生效时长可防止因流量正常波动导致的服务抖动。默认值
300秒适用于大多数场景。
常见问题
为什么服务达到了阈值却没有扩容?
可能的原因包括:
配额不足:您账户下当前地域的可用资源配额(如 vCPU、GPU)已用尽。
处于扩容冷静期:如果配置了扩容生效时长,系统会等待该时间段结束,以确认流量增长的持续性。
实例健康检查失败:新扩容的实例未能通过健康检查,导致扩容操作失败。
已达最大实例数:当前实例数已达到您设置的最大实例数上限。
为什么服务会频繁扩容和缩容(抖动)?
主要原因通常是扩缩容策略配置不当:
阈值设置过于敏感:阈值设置得太接近常规负载水平,导致微小波动即可触发扩缩容。
缩容生效时长过短:过短的冷静期使系统对流量的短暂下降反应过度,导致不必要的缩容。当流量恢复后,又会立即触发扩容。建议适当延长缩容生效时长。
相关文档
如需定时自动调整实例数,请参见定时自动扩缩容功能。
如需灵活调配资源应对变化需求,请参见弹性资源池。
通过自定义监控指标监控扩缩容效果,请参见自定义监控及扩缩容指标。