Jerin
1
【TiDB 使用环境】测试/
【TiDB 版本】8.5.1
【问题复现路径】
- 创建限流资源组
CREATE RESOURCE GROUP IF NOT EXISTS rg_limit RU_PER_SEC = 1 QUERY_LIMIT=(EXEC_ELAPSED=‘1ms’,ACTION=KILL, WATCH=EXACT DURATION ‘1m’) ;
- 创建限流sql规则,把限流sql移动到对应资源组rg_limit执行
QUERY WATCH ADD RESOURCE GROUP default ACTION SWITCH_GROUP(rg_limit) SQL TEXT EXACT TO ‘select sleep(2);’ ;
- 执行限流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)。
system
(system)
关闭
4
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。