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

背景信息

定时任务是一种预设任务,可以在指定时间执行指定伸缩规则,实现计算资源的自动扩张或者自动收缩,满足业务需求的同时又能控制成本。

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

定时任务支持的主要配置项如下所示:

  • 执行时间:如果未设置重复周期,则按指定的日期和时间执行一次。如果设置了重复周期,则该属性指定的时间点默认为周期性任务的执行时间点。
    注意 请勿填写自创建或修改当天起90日后的时间,否则定时任务无法生效。
  • 伸缩组:请选择已创建的伸缩组,更多信息,请参见伸缩组概述
  • 伸缩方式:支持选择已有伸缩规则伸缩组内实例数量设置两个选项。
  • 伸缩规则(简单规则):如果伸缩方式为选择已有伸缩规则时,请选择已创建的伸缩规则。
  • 重试过期时间:避免因为单次执行伸缩规则失败影响定时任务的结果。如果同一分钟内存在多个待执行的定时任务,弹性伸缩会执行最新创建的定时任务。
  • 重复周期:您可以选择不设置、按天、按星期、按月的方式重复执行定时任务,如果要求多样,也可以使用Cron表达式。Cron表达式的详细介绍,请参见Cron表达式
    说明 修改定时任务的重复周期方式时,不支持选择不设置选项。

操作步骤

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,选择自动触发任务管理 > 定时任务
  3. 在顶部菜单栏处,选择地域。
  4. 单击创建定时任务
  5. 配置定时任务。
    1. 输入定时任务的名称。
      名称为2~64个字符,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。
    2. 可选:输入定时任务的描述。
      描述为2~200个字符,主要体现定时任务的目的、作用等信息,便于日后查看。
    3. 输入执行时间。
      定时任务的触发时间。
    4. 选择伸缩组。
    5. 配置伸缩方式。
      • 选择已有伸缩规则:选择伸缩组中已有的伸缩规则,支持名称搜索功能,定时任务触发时执行该伸缩规则。
        说明 定时任务仅支持执行简单规则。
      • 伸缩组内实例数量设置:输入最大实例数、最小实例数和期望实例数,定时任务触发时会覆盖伸缩组的当前设置,并在指定时间立即生效。
        说明 如果创建伸缩组时没有开启期望实例数功能,则只能设置最大实例数和最小实例数。
    6. 可选:配置重试过期时间。
      时间范围是0秒~21600秒(6小时)。如果未能在执行时间触发伸缩动作,弹性伸缩将在重试过期时间内继续尝试执行定时任务。
    7. 可选:配置重复周期。
      选择重复执行定时任务的周期,并设置重复结束时间,重复结束时间必须晚于任务的首次执行时间。
  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定时任务一小时限制执行一次。
  • 确保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分钟。
? 不指定值,仅日期域和星期域支持该字符。
说明 当日期或星期域其中之一被指定了值以后,为了避免计算冲突,需要将另一个域的值设为?
在日期域中,?表示不指定具体某日期。在星期域中,?表示不指定具体某星期几。例如,以UTC+0时区为例,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执行任务
15 9 * * * 每天17: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执行任务