TiSpark 多任务100并发写入TiKV非常慢

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

[TiDB 版本]
tidb: 4.0.11
tispark:2.3.14

[问题描述]
一个tispark任务,读取200w数据,1.2G,给了2cores、1executor,2G executor mem,写完13min,符合要求
但是启动了50个spark任务时,给同样配置,每个spark job 给了2cores、1executor,2G executor mem,算上driver,共150cores,250G内存,100并发写入 1个表,跑不下来,全部卡死在最后两步foreachPartition。并发写50个不同表,耗时非常严重,平均约4小时
tidb集群:
tidb+pd 3台,8c 16g
tikv: 3台 16c 32g
tiflash: 3台 32c 72g
此配置的集群,写入50个不同的表,耗时4小时(最快的一个job是3h,37min,最慢的是4h,20min),后来把tiflash的三台也扩容为kv,此时也写入50个不同的表,耗时不尽相同(最快的一个job是1h10min,最慢的3h),想了解下为何写入这么慢,CPU未超过50%,倒是监控显示IOUtils经常100%(上面一个任务写入 也是经常100%,但是也写入很快),是IO不行吗,如何从监控获取更多信息?

写入比较快的耗时
写入慢的耗时

tikv监控:




若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

node-exporter一张,overview一张,trouble-shooting一张

KV 照片太大了,怎么上传呢

https://metricstool.pingcap.com/

导出监控步骤:

  1. 打开监控面板,选择监控时间
  2. 打开 Grafana 监控面板(先按 d 再按 E 可将所有 Rows 的 Panels 打开,需等待一段时间待页面加载完成)
  3. https://metricstool.pingcap.com/ 使用工具导出 Grafana 数据为快照

udp-tidb-TiKV-Details_2021-04-16T03_41_31.661Z.json (6.3 MB)

这个是tikv details的关键部分,都展开太大了,导不出来,还需要哪里的监控我给您导出下,我目前怀疑是IO不行,看到append /apply /commit log 耗时严重,很多都是100ms以上的,再看compaction耗时,很多都是几分钟的。。 所以我应该怎么去查IO能力,以及如果要改善IO,应该大致提高哪些参数

可以参考下写入慢的排查流程文档看下:TiDB 写入慢流程排查系列(一)— 前言

你们的文章我能看的都看了,都排查了,现在就是IO这块了,主要是不知道多少算高多少算低,怎么调

可以看 node_exporter 监控中对应 tikv 实例的 disk 监控,看下是不是已经达到磁盘瓶颈了,如果达到磁盘瓶颈的话,可以考虑升级磁盘性能或者扩容缓解磁盘压力。

这个是不是就算达到瓶颈了

这个磁盘单次 IO latency 都已经到上百毫秒了,基本是属于磁盘到瓶颈了。
一般正常的话,需要磁盘 latency 在微妙级别。

1 个赞