使用TIDB进行Sysbench性能压测,读写性能差

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】

【概述】 场景 + 问题概述
使用sysbench进行压测,数据写不进去,查询也很慢。
【背景】 做过哪些操作
使用sysbench进行压测。
【现象】 业务和数据库现象
1万条数据的情况下,可以写入数据,TPS只有75,
2万条数据的情况下,可以写入数据,TPS只有65,
2000万条数据的情况下,可以写入数据,但是TPS只有124。
4000万条数据的情况下,无法写入数据。
【问题】 当前遇到的问题
读写性能过差
【业务影响】
正在技术选型
【TiDB 版本】

【应用软件及版本】
sysbench
【附件】 相关日志及配置信息
诊断报告链接:
http://124.70.29.116:2379/dashboard/api/diagnose/reports/1c983885-f978-41e0-a650-13a1ffc8db66/detail
监控概览链接:
http://124.70.29.116:2379/dashboard/#/overview

  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息

监控(https://metricstool.pingcap.com/)

  • TiDB-Overview Grafana监控
  • TiDB Grafana 监控
  • TiKV Grafana 监控
  • PD Grafana 监控
  • 对应模块日志(包含问题前后 1 小时日志)

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

2 个赞

以下文档可以参考下

https://asktug.com/t/topic/183732/2

2 个赞

麻烦提供下测试的资源列表、TiDB的版本与配置。

2 个赞

测试的资源是:
PD三台机器,每台都是32C、64G内存,100G+1000G硬盘
TiDB两台机器,每台都是32C、64G内存,100G+1000G硬盘
TiKV五台机器,每台都是32C、64G内存,100G+1000G硬盘
TiDB版本是5.2

2 个赞

sysbench里输出是不是很多error

1 个赞

这个倒是没有看到,现在是数据量大了,根本写不进去。我看了相关的日志,写入过程主要卡在了分布式事务的Prewrite阶段,查询过程主要卡在了Coprocessor阶段。

1 个赞


这个还是比较明确的,所以我感觉可能是Tidb本身有什么参数没有调整好

1 个赞


这个是一条查询语句的卡点,这条其实就是一个简单的 select * from sbtest01 limit 10

1 个赞

磁盘什么类型

1 个赞

机械硬盘,没有SSD

1 个赞

没做raid 没有raid缓存

1 个赞

嗯,没有做raid缓存的,这个需要做一下吗

1 个赞

有缓存提升不少行能,但没缓存也不应该这么差,看下disk performance监控

1 个赞

看起来disk performance里面是没有数据的,但是overview是有的

1 个赞

sysbench压测用多少线程啊?
TiDB的特点是延迟高,但是处理能力可以多节点分担,也就是吞吐可以很高。
你跑mysql用十几的线程,跑TiDB要用几百到几千的线程跑一个最优的线程数。
经验值大概一个TiDB处理500+线程最优吧。你的是hdd的,不太确定是多少,你试试调整下线程数。

1 个赞

看你的诊断信息里面,提示磁盘慢,可以适当调整下参数,把下面的参数调大一些,多用内存,避免频繁刷盘。至于最后一个wal-bytes-per-sync会不会影响数据安全,这个我也没得到准确答案。数据安全要求比较高的话,只调大write-buffer-size试试吧。

[rocksdb.defaultcf]
write-buffer-size = "512MB"

[rocksdb]
wal-bytes-per-sync = "4M"
1 个赞

嗯,我们这边做的是对比试验,不同组件之间都是200线程,不过感觉可能是我们用的不对,tidb在当前条件下的TPS有点低

1 个赞

我看了下诊断报告,一个tidb有链接,一个tidb没有连接,这样其实是浪费了一个计算节点。

1 个赞

tiup cluster display看下

1 个赞

1 个赞