3节点混部,怎么优化参数配置?

【 TiDB 使用环境】生产环境
3节点混部,怎么优化参数配置?官方文档上的混部参数试了一轮,感觉没什么效果
测试使用的是 8c*64G ssd盘 3 节点混部
sysbench压测混合读写,3个节点总和的值还不如mysql
3节点同时跑,128线程 10个1000万的表,各节点:TPS 500/s,QPS 1万/s,95延迟 25ms
除了提升服务器规格,还有没有可以提升的方式方法?

https://docs.pingcap.com/zh/tidb/v7.1/three-nodes-hybrid-deployment
看看这个
至于sysbench不如mysql,分析下监控,看看是不是线程数不够。通过增加线程数能不能超过mysql
找到qps不能增加的线程数,然后一直压测,看看是tidb还是tikv压力大。然后进一步分析。

1 个赞

你把架构贴出来 我们看看

先按这个兄弟说的按官网配置下,然后看下服务器资源瓶颈在哪里

  1. gogc 参数
  • 默认值:100
  • 建议调整范围:可以设置为 1000(或更高),但需监控内存使用情况和 GC 引起的性能抖动。
  1. NUMA 绑定
  • 使用 numactl --interleave=all 命令来启动 TiDB 服务,以实现 NUMA 内存的交错访问。
  1. 线程池参数
  • readpool.unified.max-thread-count:根据 CPU 核心数和业务负载调整,例如,如果每节点有 8 个核心,可以设置为 8 * 0.8 = 6,然后根据监控调整。
  • storage.scheduler-worker-pool-size:根据 TiKV 处理能力调整,可以从默认值开始,根据 CPU 利用率调整。
  1. 后台任务资源限制
  • rocksdb.max-background-jobs:根据 SSD 性能和写入负载调整,可以从默认值 2 开始调整。
  • rocksdb.max-sub-compactions:调整范围通常在 1 到 4 之间,根据写入负载和 compaction 性能调整。
  • rocksdb.rate-bytes-per-sec:根据磁盘的顺序写入速度设置,以限制后台 compaction 的影响。
  1. 监控与分析
  • 利用 TiDB Dashboard、Prometheus 和 Grafana 等工具监控关键指标,根据监控数据调整参数。
  1. 网络和 CPU 资源争抢
  • 确认网络软中断是否对 CPU 造成压力,使用 mpstat 等工具监控 CPU 状态。
  1. SQL 执行计划稳定性
  • 使用 EXPLAINEXPLAIN ANALYZE 分析慢查询的执行计划,根据需要调整索引或使用 SQL Binding。
  1. 版本更新
  • 考虑升级到最新稳定版本以利用新特性和性能改进。

强在复杂的读吧,写可能也不是tidb的强项

默认参数应该就够用了

没啥好调整的,3节点是很难跑过mysql的

l架构就是3台 8C 64G 的服务器,每台上各部署一个 pd\tikv\tidb

最好不要混不
如果一定要混合 做好tikv和tidb的隔离

tidb和mysql 侧重点不一样 mysql主从得手动切换
读写业务无法分离
性能tidb打不过mysql
但mysql 会丢数据
时不时重启 binlog异常这种问题你都可以不用处理了

你这配置太低了,生产环境tidb和tikv核数最小要16核,另外tidb和tikv要分开部署,不能混部,会出现争抢资源的情况,性能也不会太好

说实话,TiDB就不太适合混合部署,混合部署很容易造成组件之间争夺资源,业务量上来一点就很容易把组件给搞得自动重启,比如一旦内存不足就很容易把内存消耗最多的组件进程给干掉,我们之前混合部署就遇到过好几次TiKV节点自动重启,就是因为TiKV组件进程消耗内存排前面,所以首先就Kill它。

1 个赞

有时候还是宁愿各个节点的资源少一点,但是节点多一点,存储节点和计算节点分开部署,而不是节点少,资源多,但是存储和计算节点混合在一起部署。

别混合部署

你可以把当前配置和集群监控发出来看看,是不是有热点之类的问题。只是描述结果很难帮你看呀

根据架构进行配置

测试、学习的话,混部搞搞还可以,生产的话,不建议……

参考官网的性能调优
https://docs.pingcap.com/zh/tidb/stable/performance-tuning-overview

文档里面有专门针对这种混部的部署方法。 :astonished: