?insert带来的TiDB集群性能瓶颈排障

本文通过分析TiDB线上集群的一次业务问题,整理了故障排查的思路,结合这个案例也可以让有类似潜在威胁的同学提前规避 。
问题背景
线上某业务将数据导入新建物理分表,指定了shard_row_id_bit 以及 pre_split_region来避免热点 。几天后的凌晨,集群出现qps骤降和 duration 耗时异常 。

集群版本:v3.0.5集群配置:普通SSD磁盘,128G内存,40 核cputidb21 TiDB/PD/pump/prometheus/grafana/CCStidb22 TiDB/PD/pumptidb23 TiDB/PD/pumptidb01 TiKVtidb02 TiKVtidb03 TiKVtidb04 TiKVtidb05 TiKVtidb06 TiKVtidb07 TiKVtidb08 TiKVtidb09 TiKVtidb10 TiKVtidb11 TiKVtidb12 TiKVtidb13 TiKVtidb14 TiKVtidb15 TiKVtidb16 TiKVtidb17 TiKVtidb18 TiKVtidb19 TiKVtidb20 TiKVwtidb29 TiKVwtidb30 TiKV2
问题现象和分析过程
6 月 21 日凌晨 01:24分左右,qps大幅骤降,durtation大幅增高,监听及报警包含如下:
?insert带来的TiDB集群性能瓶颈排障


?insert带来的TiDB集群性能瓶颈排障


?insert带来的TiDB集群性能瓶颈排障


集群region数量和大小上涨缓慢,且此时没有大规模region balance:
?insert带来的TiDB集群性能瓶颈排障


pd监控显示各节点磁盘消耗停滞:
?insert带来的TiDB集群性能瓶颈排障


tidb –> kv error 监控面板下面出现下述的告警信息:
?insert带来的TiDB集群性能瓶颈排障


?insert带来的TiDB集群性能瓶颈排障


上图中有出现server is busy,这可能是raftsotore线程卡了,导致消息没有及时处理,也可能是写入的事物过多,TiKV进行写入流控,可能是查询量过大,产生了堆积 。
通过监控我们定位到server is busy的节点,是ip为218结尾的这台机器出现了问题:
?insert带来的TiDB集群性能瓶颈排障


同时,218这个节点的pending commands也出现异常,其scheduler worker cpu也远高于其他节点 。
日志中未见异常,先将其重启 。
?insert带来的TiDB集群性能瓶颈排障


?insert带来的TiDB集群性能瓶颈排障


重启问题节点218后,能看到pending command和worker cpu转移了:
?insert带来的TiDB集群性能瓶颈排障


对TiKV的日志进行过滤:
cat 218.log| grep conflict | awk -F 'tableID=' '{print $2}' 都过滤下写冲突的 tableid select * from information_schema.tables where tidb_table_id='93615';
["commit failed"] [conn=250060] ["finished txn"="Txn{state=invalid}"] [error="[kv:9007]Write conflict, txnStartTS=417517629610917903, conflictStartTS=417517692315762921, conflictCommitTS=417517692315762921, key={tableID=93643, indexID=1, indexValues={f73732b3d9f35742e39e6bba8e401192, www.baidu.com, }} primary={tableID=93643, indexID=1, indexValues={f73732b3d9f35742e39e6bba8e401192, www.baidu.com, }} [try again later]"][kv:9007]Write conflict, txnStartTS=417517629610917903, conflictStartTS=417517692315762921, conflictCommitTS=417517692315762921, key={tableID=93643, indexID=1, indexValues={f73732b3d9f35742e39e6bba8e401192, www.baidu.com, }} primary={tableID=93643, indexID=1, indexValues={f73732b3d9f35742e39e6bba8e401192, www.baidu.com, }} [try again later]"] [errorVerbose="[kv:9007]Write conflict, txnStartTS=417517629610917903, conflictStartTS=417517692315762921, conflictCommitTS=417517692315762921, key={tableID=93643, indexID=1, indexValues={f73732b3d9f35742e39e6bba8e401192, www.baidu.com, }} primary={tableID=93643, indexID=1, indexValues={f73732b3d9f35742e39e6bba8e401192, www.baidu.com, }} [try again later]

推荐阅读