
# 使用TaurusDB配置自治限流
#### 操作场景
在高并发的互联网应用中，当系统遭遇突发流量或异常读写时，可能会导致系统响应变慢，影响用户体验和业务连续性。为了解决上述问题，自治限流通过预先设置CPU阈值、可允许最大活跃连接数、事件持续时间及最大并发数等前置条件，当相关条件满足时系统会对会话进行自动流控，从而在突发流量过高、异常读写等业务场景下保障核心业务的可用性。
当前仅支持对主节点设置自治限流，生效中的限流规则可以在SQL限流页面查看。
#### 版本约束
TaurusDB内核版本2.0.69.250900及以上实例支持自动SQL限流功能。
内核版本的查询方法请参见[如何查看云数据库 TaurusDB实例的版本号](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0141.html)。
#### 约束限制
- 只支持主节点设置自治限流，只读节点暂不支持。
- 打开自治限流开关会同步开启SQL限流开关。
- 自动生成SQL限流规则总数不会超过10条，总SQL限流条数限制100条。
- 触发自治限流后生成的限流规则将在到期后自动删除，您也可以在SQL限流页面手动删除。如果修改自治限流配置或关闭自治限流功能，已生成的限流规则将自动被清理。
- 自治限流功能新增SQL限流规则后，已经执行中的SQL不会被限制，仅限制新增的SQL。
- 已存在相同关键字的限流规则时，不会自动生成新的限流规则。
- 只会生成SELECT类型的限流规则。
- 自治限流将根据非root账户的会话生成限流规则。
- 备份恢复会清空SQL限流规则和自治限流配置。
 
#### 操作步骤
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入"实例概览"页面。
4. 在左侧导航栏选择"智能DBA助手"下的"SQL分析与优化"。
5. 选择"自治限流"。 
   您也可单击"自治运维"，开启自治限流功能。
   
   
6. 单击"自治限流"，打开![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002490332062.png)，开启自治限流开关，配置自治限流参数，以自动限制在高负载情况下的SQL执行，防止系统过载。参数说明请参见[表1]。
   
   **示例：**
   在限流时间窗15:00-20:00，检测实例指标"CPU利用率 \>= 90%"且"活跃会话数 \>=20"，且持续5分钟都处于该状态则触发自治限流。
   每次限流时间最大5分钟，在限流期间，如果CPU利用率、活跃会话数、持续时间的任一条件不再满足限流策略，将停止限流。
   图1配置示例   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002490172080.png "点击放大")
   
    表1自治限流参数 
   | **参数** **项** | **说明**                                                                                                                                                                                        |
   |:---|:---|
   | 限流时间窗        | 选择合适的限流时间段。                                                                                                                                                                                   |
   | 每次最大限流时长     | 在限流时间窗内满足限流策略时，对主节点限流的最大时长，单位是分钟。 超过设置的最大限流时长，会自动退出限流。如果触发条件无变化，则下次间隔1分钟后触发再次限流。 范围：1\~1440 |
   | CPU利用率       | CPU利用率阈值用于判断实例的负载情况，当CPU利用率超过设定值（≥70%）时，结合与活跃会话数的关系（且、或）判断是否触发自治限流。                                                                                                                           |
   | 活跃会话数        | 活跃会话数条件用于判断实例的并发访问量，当活跃会话数超过设定值时，结合CPU利用率条件判断是否触发自治限流。 范围：1\~5000。                                                                              |
   | 持续时间（分钟）     | 设置持续时间以确保在满足CPU利用率和活跃会话数条件后，经过一定时间的观察期再触发自治限流。可以自定义事件持续时间，支持2\~60分钟。                                                                                                                          |
   | 最大并发数        | 最大并发数用于限制与关键字匹配的SQL语句的并发执行数量，当并发数超过设定值时，超出的SQL语句将被拒绝执行。 范围：1\~1000000000。                                                                       |
   | SQL限流规则      | 如需保留已有的SQL限流规则，请勾选保留SQL限流规则。                                                                                                                                                                  |
      
   
   
7. 单击"确定"。
8. 当触发自治限流后，自治限流将自动生成SQL限流规则，您可以在SQL限流页面查看生效中的限流规则。
 
#### 相关API
- [开启自治限流](https://support.huaweicloud.com/api-taurusdb/SetAutoSqlLimiting.html)
- [关闭自治限流](https://support.huaweicloud.com/api-taurusdb/DeleteAutoSqlLimiting.html)
- [查询自治限流规则](https://support.huaweicloud.com/api-taurusdb/ShowSqlAutoSqlLimiting.html)
- [查询自治限流执行记录](https://support.huaweicloud.com/api-taurusdb/ShowAutoSqlLimitingLog.html)
 
