tidb资源管控实现限流不生效

【TiDB 使用环境】测试/
【TiDB 版本】8.5.1
【问题复现路径】

  1. 创建限流资源组
    CREATE RESOURCE GROUP IF NOT EXISTS rg_limit RU_PER_SEC = 1 QUERY_LIMIT=(EXEC_ELAPSED=‘1ms’,ACTION=KILL, WATCH=EXACT DURATION ‘1m’) ;
  2. 创建限流sql规则,把限流sql移动到对应资源组rg_limit执行
    QUERY WATCH ADD RESOURCE GROUP default ACTION SWITCH_GROUP(rg_limit) SQL TEXT EXACT TO ‘select sleep(2);’ ;
  3. 执行限流sql
    select sleep(2);
    4.强制使用限流资源组执行sql
    select /*+ RESOURCE_GROUP(rg_limit) */ sleep(2);

【遇到的问题:问题现象及影响】
对应直接执行的sql没有被限流




本地测试了下,如上述现象。也测试了 root 默认resource group 改为rg_limit

mysql> alter user root resource group rg_limit;

Query OK, 0 rows affected (0.02 sec)

session2 root重新连接:第二次查询生效了

mysql> select sleep(2);

±---------+

| sleep(2) |

±---------+

| 1 |

±---------+

1 row in set (0.07 sec)

mysql> select sleep(2);

ERROR 8254 (HY000): Quarantined and interrupted because of being in runaway watch list

mysql>

可以实现sleep(2)被kill掉。
正在确定是具体那部分没生效导致的上述现象

1 个赞

@Jerin 老师,确认了下,问题现象是符合预期的:SQL命中query_watch之后action switch_group到default(action kill duration 1ms),SQL不会被kill。目前switch_group一般是针对 RU_PER_SEC 这个,降速用的

这个功能我这边已经发起了feature:select sleep(2)命中query watch后被kill,且保持duration 1m效果(此后保持一分钟之内此sql的发起一直被kill)。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。