请问TIDB如何做流控

【 TiDB 使用环境】线上、测试、调研
【 TiDB 版本】 v5.3.0
【遇到的问题】 TIDB短时间流量很大,需要优化
【复现路径】做过哪些操作出现的问题
【问题现象及影响】



CPU瞬间100%,网络也2Gbps;有很大风险;请问如何优化下?比如限流之类

【附件】

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。

  1. 可以参考下性能调优相关手册

    https://docs.pingcap.com/zh/tidb/stable/tune-tikv-thread-performance
  2. 看这个很像是脚本定时导致,还是考虑业务上是否也能同步做一些限制
  3. 流量大,是不是可以去 DashBoard 看下是否是因为读大量数据导致,不一定是大量查询,可能就是一些查询一次性查大量数据,那可能会存在慢查询,可以考虑中断超过多少秒的查询进行限制

1、tidb实例侧可通过token-limit控制并发

2、优化SQL,尽量让算子下推到store上,降低网络流量

3、扩容TiDB实例个数,做好LB

请问这个token-limit在监控上能体现嘛? 我去看看是否在异常时间段里,这个也暴增了。

数据是从tikv节点到tidb。 但是这些数据没直接返回给业务服务,因为业务服务与tidb之间流量没特别大。

没有图能直接看,可以通过tidb->Server里面的Connection Count看所有连接数(活动+非活动),也可以用QPS*Duration/1000ms来估算并发活动会话数

那听起来很像是慢查询导致的,可能有些数据没命中索引,导致 TiDB 从 TiKV 查了很多数据再 Server 层做聚合,可以看一下 TiDB DashBoard 那段时间的慢查询和查询 SQL 资源消耗情况

嗯,一般都是全表扫的可能性比较大

1、tidb实例侧可通过 token-limit 控制并发

2、优化SQL,尽量让算子下推到store上,降低网络流量

3、扩容TiDB实例个数,做好LB 其实最大原因是有cpu总量很高的sql 在dashboard上把cpu高的sql降下来搞定就ok了

1 个赞

1、scheduler 方面也可以限流


https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#scheduler-pending-write-threshold

2、RocksDB 方面也可以限流

https://docs.pingcap.com/zh/tidb/stable/tidb-troubleshooting-map#43-客户端报-server-is-busy-错误

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。