如何控制Azure SQL Serverless计算资源自动扩缩容触发规则
调整Azure SQL Serverless 自动扩容阈值的实现方法
Azure SQL Serverless 支持自定义自动缩放的触发阈值,你可以通过修改对应配置参数实现仅CPU利用率达到90%以上才触发向上扩容,具体操作如下:
1. 修改CPU扩容触发阈值
默认配置下,Serverless层CPU利用率持续超过70%就会触发向上扩容,你可以通过T-SQL修改AUTOSCALE_MAX_HIGH_CPU_THRESHOLD参数将阈值调整为90%:
-- 连接到目标Azure SQL数据库执行 ALTER DATABASE <你的数据库名称> MODIFY ( SERVICE_OBJECTIVE = '<当前服务层级配置,例如GP_Gen5_1>', AUTOSCALE_MAX_HIGH_CPU_THRESHOLD = 90 );
参数取值范围为50~100,调整后仅当CPU利用率持续10秒以上超过90%时,才会触发vCore向上扩容。
2. 同步调整其他扩容触发条件
除CPU外,内存利用率、工作线程数、事务日志生成速率等指标达到阈值也会触发自动扩容,如果希望仅靠CPU阈值触发扩容,可同步调整对应参数:
- 内存扩容阈值:调整
AUTOSCALE_MAX_HIGH_MEMORY_THRESHOLD,可设置为95% - 工作线程扩容阈值:调整
AUTOSCALE_MAX_HIGH_WORKER_THRESHOLD,可设置为95%
注意:不建议将阈值设置为100%,避免突发高负载时扩容滞后导致业务请求超时。
3. 关于计费vCore与实际CPU利用率差异的说明
你观察到的实际CPU利用率仅3%但计费vCore占最高配置30%~50%的情况,是因为Serverless层的计费vCore按分钟级vCore使用平均值统计,且扩容后有至少1分钟的资源保持时间才会触发缩容,即使后续CPU快速回落,这段时间的vCore占用也会计入平均值。
如果要进一步降低不必要的资源占用,可同时调低缩容触发阈值AUTOSCALE_MIN_LOW_CPU_THRESHOLD,并缩短缩容冷却时间,让资源在负载下降后更快回落。
内容的提问来源于stack exchange,提问作者MYK
相关产品推荐
相关产品推荐

