数据库自治服务DAS支持自动SQL限流功能,您可以设置触发条件,当相关条件满足时会自动触发SQL限流。

前提条件

  • 目标数据库实例为:
    • RDS MySQL 5.6、5.7、 8.0高可用版、三节点企业版。
    • PolarDB MySQL版 5.6集群版、5.7集群版、 8.0集群版、8.0高压缩引擎(X-Engine)。
    • MyBase MySQL 5.6、5.7、 8.0高可用版。
  • 目标数据库实例已开启自治服务,详情请参见自治中心

背景信息

技术原理请参见自动SQL限流

适用场景

自动限流主要应用在以下3种场景:
  • 流量问题:出现缓存穿透或异常调用情况,导致某类SQL并发量急剧上升。
  • 数据问题:存在大订单数据的账号,该账号的相关SQL占用大量数据库资源。
  • SQL问题:未创建索引的SQL被大量调用,影响正常业务。

操作步骤

  1. 登录DAS控制台
  2. 在左侧导航栏中,单击实例监控
  3. 找到目标实例,单击实例ID,进入目标实例详情页面。
  4. 在例详情页面左侧导航栏中,单击自治中心
  5. 自治中心页面,单击右侧自治功能开关
    开关设置
  6. 自治功能管理 > 自治功能设置页签中,开启自治功能开关,并在优化和限流页签勾选自动限流,然后设置如下参数作为自动限流的触发条件。
    2
    参数描述
    CPU利用率大于等于70%。
    活跃会话数
    • CPU利用率关系为时,大于等于16。
    • CPU利用率关系为时,大于等于2。
    可限流时间段可以进行自动SQL限流的时间段。
    最大限流时间进行SQL限流的最大时长。

    如果最大限流时间设置为0,当数据库实例状态满足自动SQL限流触发阈值时,会触发限流,但是会立即失效。

    持续时间CPU利用率活跃会话数量满足限流阈值的持续时间超过此参数值时,触发自动SQL限流。
    说明 例如在可限流时间段内,自定义触发条件为当CPU使用率大于80%,同时活跃会话数大于64,且该现象持续时间超过2分钟时触发自动限流,同时自动开始跟踪:
    • 如果发现故障未消除,则自动回滚该限流操作。
    • 自动限流触发后,限流操作持续的时间不会超过最大限流时间。
  7. 单击确定

    您可以在数据库实例的实例会话中,查看已自动触发的SQL限流,详细操作请参见查看自动SQL限流历史

    说明 当自动限流规则创建后,应用端使用了同时包含所有关键词的SQL语句:
    • RDS MySQL 5.6、RDS MySQL 5.7的实例和PolarDB MySQL版 5.6的集群会返回1317错误(query execution was interrupted)。
    • RDS MySQL 8.0实例、PolarDB MySQL版 5.7和PolarDB MySQL版 8.0集群会让相关SQL会处于Concurrency control waiting状态,直至等待数量超过ccl_max_waiting_count参数的值(如果实例版本支持该参数)时,会返回错误码和错误描述(Concurrency control waiting count exceed max waiting count),错误码分别是:
      • RDS MySQL 8.0为ERROR 7534 (HY000)
      • PolarDB MySQL版 5.7为ERROR 3277 (HY000)
      • PolarDB MySQL版 8.0为ERROR 7533 (HY000)

      其中,若ccl_max_waiting_count参数值为默认值0时,所有被限流的SQL均会处于Concurrency control waiting状态,不返回错误。通过DAS限流时,若该参数值为0,DAS会将其值设置为DAS的默认值;若用户将其设置为大于0的其他值,DAS不再设置该参数,直接使用用户的设置。

  8. 可选:单击事件订阅设置,设置自动SQL限流事件通知。
    当发生自动SQL限流时,会生成警告级别的DAS事件,请打开开启订阅服务开关,并配置如下参数:
    参数说明
    紧急程度通知的事件级别,即哪些事件触发后才会通知您,请选择警告
    选择联系人(组)单击042701移动到已选联系人(组),触发事件后会通知勾选的联系人或组。
    通知方式触发事件后的通知方式。
    • 手机短信
    • 钉钉机器人
    • 手机短信+钉钉机器人
    • 手机短信+邮件
    通知语言当前仅支持中文
    通知最小间隔再次发起通知的最小时间间隔,即首次通知后,如果事件持续保持触发状态,间隔多久会再次发起通知。
    事件通知

查看自动SQL限流历史

  1. 登录DAS控制台
  2. 在左侧导航栏中,单击实例监控
  3. 找到目标实例,单击实例ID,进入目标实例详情页。
  4. 在左侧导航栏,单击实例会话
  5. 实例会话页面:
    ss
    • 单击SQL限流
      • 运行中页签,查看正在执行的限流规则。
      • 运行结束页签,选择需要查看的时间段,查看限流历史记录。
      SQL限流
    • 如果在配置自动SQL限流参数时,选中同时KILL执行中的异常SQL,则可以单击结束会话历史记录,查看结束会话的历史记录。

相关API

最佳实践