insert异常慢,求助大佬帮忙排查!

集群出现很多简单sql执行慢,示例为insert语句的慢日志明细,事务模式:悲观模式
官方文档各种线程都有调整,scheduler-worker-pool-size、apply-pool-size、store-pool-size涉及的参数都调整了!
大部分慢的都是prewrite阶段耗时高!
示例慢日志:

# Time: 2025-04-15T13:58:57.316742172+08:00
# Txn_start_ts: 457361781380088517
# User@Host: 
# Conn_ID: 1843966761733305671
# Query_time: 0.422498159
# Parse_time: 0.000006488
# Compile_time: 0.000026679
# Rewrite_time: 0.000000759
# Optimize_time: 0.000014226
# Wait_TS: 0
# Prewrite_time: 0.420900196 Wait_prewrite_binlog_time: 0.000000295 Commit_time: 0.001249499 Get_commit_ts_time: 0.000231026 Slowest_prewrite_rpc_detail: {total:0.421s, region_
id: 731367814, store: 10.132.6.13:20171, tikv_wall_time: 420.3ms, scan_detail: {get_snapshot_time: 14.5µs, rocksdb: {block: {}}}, write_detail: {store_batch_wait: 55.5µs, propo
se_send_wait: 0s, persist_log: {total: 49.3µs, write_leader_wait: 53ns, sync_log: 29.1µs, write_memtable: 1.11µs}, commit_log: 388.4µs, apply_batch_wait: 386.4ms, apply: {total
:1.91ms, mutex_lock: 0s, write_leader_wait: 281.1µs, write_wal: 0s, write_memtable: 572.9µs}}} Commit_primary_rpc_detail: {total:0.421s, region_id: 731367814, store: 10.132.6.1
3:20171, tikv_wall_time: 420.3ms, scan_detail: {get_snapshot_time: 14.5µs, rocksdb: {block: {}}}, write_detail: {store_batch_wait: 55.5µs, propose_send_wait: 0s, persist_log: {
total: 49.3µs, write_leader_wait: 53ns, sync_log: 29.1µs, write_memtable: 1.11µs}, commit_log: 388.4µs, apply_batch_wait: 386.4ms, apply: {total:1.91ms, mutex_lock: 0s, write_l
eader_wait: 281.1µs, write_wal: 0s, write_memtable: 572.9µs}}} Write_keys: 46 Write_size: 3860 Prewrite_region: 45

帮忙分析下从什么维度入手,我再补充监控!


insert 后面的是 select出来的?

insert是一行一行指定,还是通过select查询出来的,,,??

不是,就是纯单条数据insert!

就是单条数据insert!

看看监控 磁盘性能



看看这2个面板够了吗?disk latency其他节点write基本一致

insert里是一条数据 还是多条数据的

一条数据!

apply_batch_wait是明显的高于其他一切。
apply里面total只有1.91ms。但是apply_batch_wait就占了386.4ms。
问题看上去就在apply这个环节里面。把相关监控都翻出来研究一下吧。

1 个赞




从监控上看99 apply wait duration per server抖动大,这个不知道啥原因 :sweat_smile:

1 个赞

其它时间看着都还好,


这个时长比较长, 网络问题?

1 个赞

tidb集群压力大么。先单个插入试下。

我觉得看图问题差不多定位到了,就是apply wait duration有问题。
100ms的时候就有问题。因为其他延迟都很低,100ms已经是3-4倍的慢了。

现在往下查,要查一下网络是不是有问题,ping值是否正常,流量是否有打满的可能,tcp retrans是否正常。

如果网络没问题。grpc的线程是否需要调整一下

https://docs.pingcap.com/zh/tidb/stable/three-nodes-hybrid-deployment/#servergrpc-concurrency

查查tikv grpc相关的指标延迟高不高。

1 个赞


当前参数设置是 server.grpc-concurrency=5;您说的tcp retrans这个监控在哪个面板下面,grpc的cpu在当前的设置下,监控显示的算高吗?看监控存在节点不均衡,不知道和leader频繁调度有没有关系!
网络应该不是原因:



应该不是网络,都是在一个机房的机器,前面这个duration抖动大也查了下,没查出原因! apply log duration 整体不高,不知道为啥wait高,有点矛盾:sweat_smile:


其他tikv节点disk监控差不多,看着也不像是磁盘的问题!

基础资源呢

还可以看下磁盘的读写吞吐量

磁盘吞吐量不知道您说的哪个监控项,没找到在哪!慢sql看着不分高低峰,凌晨也有不少
tidb的:


tikv:

1 个赞