Serverless实例RCU弹性伸缩的耗时通常为秒级,极小概率下可能因为跨机弹性扩容而耗时3~5分钟。如果您对特定时段的稳定性有严格要求,您可以定时配置Serverless实例的RCU,提前增加RCU数量。本文将介绍如何对RCU的范围进行周期性配置。
使用场景
- Serverless实例会根据CPU和内存的负载情况进行弹性伸缩。自动弹性扩容的条件为CPU或内存使用率达到60%~80%的阈值范围。若在特定时段对CPU或内存的性能稳定性有较高要求,可提前手动调整RCU的下限配置。 
- 弹性扩容的方式分为本地弹性扩容和跨机弹性扩容两种。其中本地弹性扩容的耗时为秒级,跨机弹性扩容的耗时约为3~5分钟。在99.8%的场景下,本地的秒级弹性扩容可以满足Serverless的弹性扩容需求。然而,在本地资源不足的情况下,Serverless实例的弹性扩容需要跨机进行。由于跨机需要的时间较长,可能会对业务造成一定程度的影响。在特定时段内,为避免因自动弹性扩容未能及时完成而造成的影响,建议提前将RCU的上限和下限设置为相同的数值。 
解决方案
使用定时任务调用ModifyDBInstanceSpec - 变更RDS实例API接口,在特定时段修改RCU的上下限,特定时段结束后恢复到默认的RCU上下限。
使用示例
如果需要在特定时段提升RCU下限,建议在该时段前10分钟,定时提升RCU下限,为可能出现的跨机情况预留一定时间,以确保特定时段内实例的稳定性。
例如,某项业务在早高峰时间08:00~09:00希望保证4~8 RCU的配置,可以在07:50分将RCU的下限提升至4,在09:00再恢复到0.5~8 RCU的默认配置。
Python示例
本示例使用APScheduler配置定时任务。
- 完成RAM授权、准备Python环境、配置环境变量、安装环境依赖等操作。 
- 打开命令行窗口执行如下命令,安装APScheduler。 - pip install apscheduler
- 下载示例代码。 - 访问ModifyDBInstanceSpec,进入该接口在OpenAPI门户的调试地址。 
- 在参数配置页签,配置如下参数。 
- 在右侧的SDK示例页签,选择Python语言,单击下载完整工程按钮,下载示例代码包。 
- 本地解压并进入alibabacloud_sample目录。 
 - 参数 - 描述 - 取值 - DBInstanceId - 实例 ID。 - rm-bp1t8v93k6e15**** - PayType - 实例当前的付费类型。 - Serverless - Direction - 实例变配类型。 - Serverless - MaxCapacity - RCU(Rds Capacity Unit)自动扩缩范围的上限。 - 8.0 - MinCapacity - RCU(Rds Capacity Unit)自动扩缩范围的下限。 - 0.5 - AutoPause - 是否开启Serverless实例的智能暂停和启动。 - false - SwitchForce - 是否开启Serverless实例的强制扩缩容。 - true 说明- 建议下载SDK V2.0版本示例工程。 
- 修改代码,配置定时任务。 - 修改sample.py,增加APScheduler定时任务的内容,使用Cron触发器以设定定时任务的执行时间。例如, - scheduler.add_job(my_scheduled_job, 'cron', hour=8, minute=0)代表每天的08时00分00秒。若您计划每日07:50设置RCU范围为[4, 8],并在每日09:00将RCU范围恢复为[0.5, 8],示例代码如下。
Java示例
本示例使用Spring Schedule配置定时任务。
本示例需要安装Java 1.8以上开发环境。
- 完成RAM授权、配置环境变量等操作。 
- 下载示例程序并在本地解压。 - 示例程序请参见demo.zip。 
- 修改 - ScheduleTask.java的内容,根据实际情况配置定时任务。- 配置Cron表达式以设定定时任务的执行时间。其中, - cron = "秒 分 时 日 月 周",详情请参见Cron。- 例如, - @Scheduled(cron = "0 0 8 * * ? ")代表每天的08时00分00秒。若您计划每日07:50设置RCU范围为[4, 8],并在每日09:00将RCU范围恢复为[0.5, 8],示例代码如下。- 部分参数的含义如下,请用实际数值进行替换。 - 参数 - 描述 - 示例 - RegionId - 实例所属地域。 - cn-hangzhou - DBInstanceId - 实例ID。 - rm-bp1t8v93k6e15**** - PayType - 实例当前的付费类型。 - Serverless - Direction - 实例变配类型。 - Serverless - MaxCapacity - RCU自动扩缩范围的上限。 - 8.0 - MinCapacity - RCU自动扩缩范围的下限。 - 0.5 - AutoPause - 是否开启Serverless实例的智能暂停和启动。 - false - SwitchForce - 是否开启Serverless实例的强制扩缩容。 - true