tidb 集群的最大连接数该如何测算?

【TiDB 使用环境】生产环境
【TiDB 版本】8.5.1
【集群节点数】
tikv 16c 64G 5台
tidb 8c 32G 3台
pd 8c 16G 3台
这样的集群配置,该如何测算数据库的最大连接数?防止连接数过大

tidb默认不限制最大连接数,我这边都是不设置的,也可以根据集群负载来调整
https://docs.pingcap.com/zh/tidb/stable/manage-cluster-faq/#tidb-同时支持的最大并发连接数

1 个赞

我是想知道一个上限,防止连接数太大,无法优化的时候才会考虑扩容之类的

sysbentch压压试试,连接数自己随便写

那只能做一下业务压测了,一般关注cpu,内存去考虑扩容就行,不用太关注连接数,毕竟这个连接数包括了活跃的和sleep的,并不能反映集群的压力情况

1 个赞

可以看看有瓶颈时,这里的连接数是多少,然后去做限制。
https://docs.pingcap.com/zh/tidb/stable/dashboard-monitoring/#connection-count

go和c还不一样吧,如果c,多个连接可能需要多个线程,本身就比go提供的协程要重,消耗更多系统资源,io方式如果不是多路复用就更慢。

现在io基本都是多路复用,再加go协程,不活动的连接对资源消耗极少。同样的cpu资源,tidb能支持更多连接,如果连接不活动,消耗的资源也更少。销毁/建立一个协程的代价也更低。

在新技术的加成下,连接数的制约应该说是大大下降了。

你用sysbectch压一下确实有用,但是如果每个连接都跑满负载的话,得到的连接数肯定是远远小于你的硬件实际能支持的最大连接数的。

我个人是觉得连接数的制约,对于tidb来说已经不太重要了。不如关注其他的制约因素,例如从cpu,内存,io这些方面入手。

sysbentch压测一下,心里有底

用sysbench可以参考,如果需要比较准的结果还是用结合业务来压

理论方面建议看下,这篇文章https://docs.pingcap.com/zh/tidb/stable/dev-guide-connection-parameters/#连接池与连接参数

使用 SSD 时,需探求其他的经验公式。可以参考 CockroachDB 对数据库连接池中的描述,推荐的连接数大小公式为:

connections = (number of cores * 4)

实际生产中,tidb节点配置是64c,考虑到大部分业务是TP类型,应用里连接数虽然配置的高,但是活动的连接占比并不高。我们把单个tidb节点连接数限制在500以下(基本上是core * 8),供参考。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。