在业务负载出现显著的波峰波谷时,您可以开启水平自动扩缩容功能。这样,EAS服务能够自动调整实例数量,实现动态管理线上服务的计算资源,从而保障业务平稳运行并提高资源利用率。本文介绍如何开启、关闭和更新水平自动扩缩容功能,以及自动扩缩容过程中的目标实例个数的计算公式。
背景信息
管理水平自动扩缩容功能支持两种方式(方式一:通过控制台管理水平自动扩缩容功能和方式二:通过本地客户端管理水平自动扩缩容功能)。开启水平自动扩缩容功能后,服务如何自动计算目标实例数请参见扩缩容功能的伸缩策略说明。
方式一:通过控制台管理水平自动扩缩容功能
开启水平自动扩缩容功能
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入模型在线服务(EAS)页面。
您可以使用以下任意一种方式,打开自动弹性扩缩容设置对话框。
方式一:
在服务列表中,单击目标服务名称,进入服务详情页面。
切换到自动伸缩页签,在弹性伸缩区域,单击开启弹性伸缩。
方式二:在服务列表中,单击目标服务操作列下的>弹性伸缩,打开自动弹性扩缩容设置对话框。
在自动弹性扩缩容设置对话框,配置以下参数。
基础配置
参数
描述
最小实例数
自动弹性扩缩容的下界,支持设置的下限为0。
最大实例数
自动弹性扩缩容的上界,支持设置的上限为3000。
常规扩缩容指标
在下拉列表中选择常规扩缩容指标并配置伸缩阈值:
单实例QPS伸缩阈值:当单实例的平均QPS大于伸缩阈值时会触发扩容。
CPU利用率阈值:当单实例的平均CPU使用率大于伸缩阈值时会触发扩容。
异步队列长度:仅异步服务支持配置。当队列里面的服务请求数大于伸缩阈值时会触发扩容。
GPU利用率:当单个实例的平均GPU使用率大于伸缩阈值时会触发扩容。
自定义扩缩容指标
自定义配置扩缩容指标和伸缩阈值。
高级配置
参数
描述
扩容生效时长
指定从扩容指令下达开始到扩容实际生效所需的时长,如果在此期间系统检测到请求量恢复了,将会取消扩容指令。单位为秒,默认值为1秒。
缩容生效时长
指定从缩容指令下达开始到缩容实际生效所需的时长,如果在此期间系统检测到请求量增加了,将会取消缩容指令。单位为秒,默认值为300秒。
缩容到0的生效时长
指定从缩容指令下达开始到服务实例缩容到0所需的时长。
从0扩容的实例数
服务从实例数为0开始扩容时,直接扩容到达的指定实例数量。
单击开启。
更新水平自动扩缩容配置信息
您可以使用以下任意一种方式,打开自动弹性扩缩容设置对话框。
方式一:在自动伸缩页签的弹性伸缩区域,单击更新。
方式二:在服务列表中,单击目标服务操作列下的>弹性伸缩,打开自动弹性扩缩容设置对话框。
在自动弹性扩缩容设置对话框,修改相关配置信息。
单击更新。
关闭水平自动扩缩容功能
在自动伸缩页签的弹性伸缩区域,单击关闭弹性伸缩。
在确定关闭弹性伸缩对话框,单击确定。
方式二:通过本地客户端管理水平自动扩缩容功能
开启或更新水平自动扩缩容功能
创建服务之后,默认不开启Autoscaling(水平自动扩缩容)功能。您可以登录eascmd客户端后使用autoscale子命令开启Autoscaling功能。如何登录eascmd客户端,请参见下载并认证客户端。开启和更新Autoscaling功能策略方式相同,均支持使用以下两种方式:
参数形式(推荐)
命令格式
eascmd autoscale [region]/[service_name] -D[attr_name]=[attr_value]
使用示例
eascmd autoscale cn-shanghai/test_autoscaler -Dmin=2 -Dmax=5 -Dstrategies.qps=10
配置形式
命令格式
eascmd autoscale [region]/[service_name] -s [desc_json]
Autoscaling功能通过配置desc_json来控制伸缩策略,desc_json参数配置示例如下。
{ "min": 2, "max": 5, "strategies": { "qps": 10 } }
参数
描述
min
最小实例个数,min需要大于0。
说明即使按伸缩指标计算后所需的实例数小于min,服务实例也不会小于min值。
max
最大实例个数,max最大值为300。
说明即便按伸缩指标计算后所需的实例数多于max,服务实例也不会多于max值。
strategies
根据业务使用场景,您可以选择qps、cpu定义伸缩策略:
qps:单实例的QPS伸缩阈值,当单实例的平均QPS大于该值时会触发扩容。
cpu:单实例的CPU使用率阈值,取值范围(0,100),当单实例的平均CPU使用率大于该值时会触发扩容。
使用示例
eascmd autoscale cn-shanghai/test_autoscaler -s scaler.json
关闭水平自动扩缩容功能
命令格式
eascmd autoscale rm [region]/[service_name]
使用示例
eascmd autoscale rm cn-shanghai/test_autoscaler
扩缩容功能的伸缩策略说明
自动伸缩过程中目标实例个数的计算公式
desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
参数说明
desiredReplicas:目标实例个数。
currentReplicas:当前实例个数。
currentMetricValue:当前的伸缩指标均值。
desiredMetricValue:期望的伸缩指标的均值。
使用示例
以QPS伸缩为例,您部署服务时压测或预估单实例能够承载的QPS量为10,将单实例的QPS伸缩阈值(strategies.qps)设置为10。当每个实例平均QPS量增加至23时,实例个数为2。根据公式计算目标实例个数为5:
ceil[2 * (23/10)] = 5
。若单实例承载的QPS量下降至10,即每个实例平均QPS量为2。根据公式计算目标实例个数为1:
ceil[5 * (2/10)] =1
。此时实例个数会逐步缩容至1,缩容过程相对平滑一些,避免因请求波动引起异常缩容。
相关文档
如果您需要定时将实例数自动扩缩容到指定数量,请参见定时自动扩缩容功能。
如果您需要灵活地配置和重新配置资源,以满足不断变化的需求,请参见弹性资源池。
通过自定义监控指标来观察EAS水平自动扩缩容后的资源利用率,请参见自定义监控及扩缩容指标。