如果业务量的变化时间可预测,您可以创建定时任务,在业务高峰到达前准备好足量的计算资源,或者在业务高峰后释放空闲的计算资源。

背景信息

定时任务是一种预设任务,可以在指定时间执行指定伸缩规则,实现自动扩张或者收缩计算资源,满足业务需求的同时又能控制成本。您还可以为定时任务指定重复周期,通过灵活的规则应对业务量的变化。

说明 一个账号下可以创建的定时任务数量有限,请参见 使用限制

定时任务支持设置自动重试时间,避免因为单次执行伸缩规则失败影响定时任务的结果。如果同一分钟内存在多个待执行的定时任务,弹性伸缩会执行最新创建的定时任务。

操作步骤

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击自动触发任务管理 > 定时任务
  3. 在顶部菜单栏处,选择地域。
  4. 单击创建定时任务
  5. 配置定时任务。
    1. 输入任务名称。
      名称为2~64个字符,以大小写字母、数字或中文开头,可包含英文句号(.)、下划线(_)或短横线(-)。
    2. 可选:输入描述。
      描述定时任务的目的、作用等信息,便于日后查看。
    3. 输入执行时间。
      定时任务的触发时间。
    4. 选择伸缩组。
    5. 配置伸缩方式。
      • 选择已有伸缩规则:选择伸缩组中已有的伸缩规则,定时任务触发时执行该伸缩规则。
        说明 定时任务仅支持执行简单规则。
      • 伸缩组内实例数量设置:输入最大实例数、最小实例数和期望实例数,定时任务触发时会覆盖伸缩组的当前设置。
        说明 如果创建伸缩组时没有开启期望实例数功能,则只能设置最大实例数和最小实例数。
    6. 可选:配置重试过期时间。
      时间范围是0秒~21600秒(6小时)。如果未能在执行时间触发伸缩动作,弹性伸缩将在重试过期时间内继续尝试执行定时任务。
    7. 可选:配置重复周期。
      选择重复执行定时任务的周期,并设置重复结束时间。
      • 您可以选择按日、周、月的方式重复执行定时任务,如果要求多样,也可以使用Cron表达式。Cron表达式的详细介绍,请参见Cron表达式
      • 重复结束时间必须晚于任务的首次执行时间。
  6. 单击确认

Cron表达式

Cron表达式是一个具有时间含义的字符串,每个具有时间含义的字符叫做域,域之间用空格隔开。弹性伸缩定时任务支持5个域的Cron表达式,格式为X X X X XX是一个域的占位符。Cron表达式中的每个域依次表示分钟、小时、日、月和星期,每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。

定时任务配置Cron表达式时,需要注意以下内容:

  • Cron表达式采用UTC+0时区,在配置Cron表达式时,您需要把本地时间换算成在UTC+0时区的时间。比如,中国的时区是UTC+8,如果您计划在中国每天20:00点执行任务,需要将计划执行时间减去8小时,设置的Cron表达式应为0 12 * * ?
  • 单个Cron定时任务一小时限制执行一次。
  • 当日期或星期域其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为?
表 1. 域取值
是否必需 取值范围 特殊字符
分钟 0~59 , - / *
小时 0~23 , - / *
1~31 , - / * ? L W
1~12 , - / *
星期 1~7,星期日取值为7 , - * ? / L #
表 2. 特殊字符
特殊字符 含义 示例
* 所有可能的值。 在月域中,*表示每个月;在星期域中,*表示星期的每一天。
, 列出枚举值。 在分钟域中,5,20表示第5分钟和第20分钟。
- 范围。 在分钟域中,5-20表示从第5分钟到第20分钟之间的每一分钟。
/ 指定数值的增量。 在分钟域中,0/15表示从第0分钟开始的每15分钟,3/20表示从第3分钟开始的每20分钟。
? 不指定值,仅日期和星期域支持该字符。
说明 当日期或星期域其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为 ?
在日期域中,?表示不指定具体日期。在星期域中,?表示不指定具体星期几。比如,15 10 15 * ?表示每月15日上午10:15执行任务,无论第15日是星期几。
L 单词Last的首字母,表示最后一天,仅日期和星期域支持该字符。
说明 指定 L字符时,避免指定列表或者范围,否则,会导致逻辑问题。
  • 在日期域中,L表示某个月的最后一天。在星期域中,L表示一个星期的最后一天,也就是星期日。
  • 如果在L前有具体的内容,例如,在星期域中的6L表示这个月的最后一个星期六。
W 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。W字符寻找最近有效工作日时不会跨过当前月份,连用字符LW时表示为指定月份的最后一个工作日。 在日期域中5W,如果5日是星期六,则将在最近的工作日星期五,即4日触发。如果5日是星期天,则将在最近的工作日星期一,即6日触发;如果5日在星期一到星期五中的一天,则就在5日触发。
# 指定每个月第几个星期几,仅星期域支持该字符。 取值范围:1~5。 在星期域中,4#2表示某月的第二个星期四。
表 3. 取值示例

下表以中国时区UTC+8为例,说明不同的Cron表达式示例代表的含义。在设置Cron表达式时,请注意将本地时间换算成在UTC+0时区的时间。

示例 说明
15 10 ? * * 每天18:15执行任务
0 12 * * ? 每天20:00执行任务
0 10,14,16 * * ? 每天18:00点、22:00以及00:00执行任务
15 10 15 * ? 每月15日18:15执行任务
15 10 L * ? 每月最后一日18:15执行任务
15 10 ? * 6L 每月最后一个星期六18:15执行任务
15 10 ? * 6#3 每月第三个星期六18:15执行任务