资源控制默认参数max-wait-duration理解问题

【TiDB 使用环境】生产环境
【TiDB 版本】8.5.1
【操作系统】centos
【遇到的问题:问题现象及影响】sql超过资源限制,被这个给停止了,提示RU不够用。针对这些参数,我有很多疑问。
1、为什么同一个账号,有的sql,执行时间几个小时,RC等待时间都达到了几个小时,SQL也能正常执行完(见图二),却没因这个参数被提前结束掉呢?
2、为啥有的sql,使用的RU过多,会报错:Exceeded resource group quota limitation;而图一被结束掉的那个sql,又没提示这个呢?
3、如果按图一日志显示,该如何去查根因sql是哪一条呢?可能当时慢查询有很多条,怎么知道具体是哪一条sql导致的呢?好像图一这种情况,也不会记录到慢查询的dashboard里。
4、根据监控,查询图三的RU,能看到,当时RU总消耗,高峰期也才5千多。这个RU我设置最大是2万;那么就又引申一个问题,RU是每秒回填速率,但是dashboard上只能看到一段时间的总RU;即使有了这个dashboard,我也无法判断,这个RU给的够不够。只能当业务受损,发现sql执行报错,我才能知道,RU不够了?
【其他附件:截图/日志/监控】
图一:
image

图二:

图三:

慢查询 有专门的记录,开启了就可以查到的,而且是按照时间记录的。

RU 的问题只能慢慢测试了,先解决慢查询的问题吧,这样可以缓解 RU 受波动的情况

慢查询参考官方文档:
https://docs.pingcap.com/zh/tidb/stable/system-variables/#tidb_slow_query_file
https://docs.pingcap.com/zh/tidb/stable/identify-slow-queries/
https://docs.pingcap.com/zh/tidb/stable/information-schema-slow-query/#slow_query

应该就是不很准确
图表都是rate平均的,实际最高ru应该比图表要高不少

是的,所以这个图表,对于我判断RU够不够用,作用不大,只能等业务发现sql执行不了是由于RU不够导致的,我这边才知道是RU不够了 :joy:。所以这个RU使用起来,不是很方便

谢谢大佬,这几篇文章我也看过了。但是有些慢sql,可能并不是他本身慢,可能是由于RU不够用了,所以在执行sql的时候,它需要等待RU的回填,才导致它也慢了;这样定位根因SQL就变得更困难了

优化吧,按照执行时间,内存等倒序优化
既然都已经等待ru回填,怎么会最高值才5000,没达到2万

回答你的问题。
1、 ”等待时间长”不等于 “消耗RU超限终止“。
2、 取决于你使用的资源管控模式和错误类型。
3、 这类被“运行时中止的SQL,不会进入慢查询日志,需查 statement_summary 或者events_statements_history
4、 你看到的是“平均RU”,而问题出在“瞬时峰值”或“单个查询配额。