raft store cpu 利用率低,tikv写入速度慢

【 TiDB 使用环境】测试环境
【 TiDB 版本】v6.5.0

【复现路径】
datax执行作业,采集oracle表到tidb,表数据量有100万行,平均插入速度1024条每秒

【遇到的问题:问题现象及影响】
作业期间,raft store cpu长期处于8%以下,利用率好低,是因为这个原因导致tikv写入速度慢吗?求助π_π

【资源配置】
4台虚拟机,每台虚拟机7核cpu、16G内存。3个kv,1个pd,1个db

【附件:截图/日志/监控】
TiKV-Details 的 cluster:

TiKV-Details 的 Thread CPU:

server_configs配置:

datax jdbc链接,该加的配置都加了:
jdbc:mysql://127.0.0.1:4000/tidb_test?allowMultiQueries=true&rewriteBatchedStatements=true&useConfigs=maxPerformance&useServerPrepStmts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT

也没有出现写热点,流量可视化视图没有出现斜黄线:
sql语句添加了 SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS=3

你这个是tidb集群压力很小吧,sql那边tp99多少?连接数多少?

连接数是长期是3

连接数增加一些试试。不能指望着tidb的延迟像mysql那样低。
延迟高的话,你的连接数又少,qps就小了。

我没有限制tidb的连接数。
show global variables like ‘max_connections’
值为0,默认不限制连接数

我是说让你业务那边连接数增加一些。就是增加一些并发。

你想提高速度,有2个途径:
1:提高单个链接的QPS,这个得优化TiDB,降低TiDB的延迟,但是目前看你的集群也没啥压力,这个路收益不大。
2:提高连接数。就是说搬货一样,从车上搬到库房,因为路线比较长,单程用时比较长。一个工人可能1分钟搬一趟,那你总的搬货速度是限制住了。如果多雇几个工人,岂不是就快了。

我的greenplum集群和tidb集群都部署在那四台虚拟机上,测试时只开启其中一个集群。同样是用datax从oracle采集某张百万行数据的表到gp或tidb。但gp的平均插入速度是15000行每秒,而tidb的平均插入速度是1024行每秒。我按网上或文档的调优手法,解决的写入热点、还在server_configs上增加了些配置(图在帖中),但无论怎么优化,tidb的写入速度一直维持在1024条每秒。

我一直观察gafana,发现我的监控和网上的截图很不一样,他们的raft store cpu峰值大多在60%-80%,而我就从来没突破过8%,总感觉是因为tikv没有有效利用资源,导致插入速度感人

3个连接,写入速度1024条每秒,每条连接341条每秒。
换算成延迟就是1000/341=2.9毫秒。
tidb就这样了 :grinning:(网络交互太多次,延迟就是比较高。适合大并发的业务)

增加连接数吧。让6个连接干活,看看是不是就2048了。

我试一下,谢谢啊

大哥这意思是不是指,我增加了连接,提高了并发数。
同时采集多个表数据到tidb,整体上写入速度是提高了,但单个表单个连接的写入速度依旧很慢。

是这个意思。
或者说,你把单个表按段,多线程搞。

datax可以开并发的,你开点并发试试


我按datax官方文档开了并行,还尝试增加优化参数,比如调大channel,调大batchSize,我还尝试更换了mysqlwriter的mysql-connect的jar包版本5.0和8.0都尝试过。
但tidb的写入速度还是1024-1228条每秒,一点都没变,唉。

[job-0] INFO StandAloneJobContainerCommunicator - Total 39900 records, 3480886 bytes | Speed 339.93KB/s, 3990 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 1.736s | All Task WaitReaderTime 3.994s | Percentage 100.00%
datax日志看下,是每条记录的大小很大吗?


写入tidb: 334kb/s 1075行/s

grafana的tidb的监控拿出来看下。
看连接数,cpu,qps,tp99那些。

你tidb和oracle之间的网络测试一下,应该有点问题吧,我这个是跨越了多个网段的,速度居然和你的差不多

tidb ->query summary → connection idletime 监控看看