【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-同时支持的最大并发连接数
我是想知道一个上限,防止连接数太大,无法优化的时候才会考虑扩容之类的
sysbentch压压试试,连接数自己随便写
那只能做一下业务压测了,一般关注cpu,内存去考虑扩容就行,不用太关注连接数,毕竟这个连接数包括了活跃的和sleep的,并不能反映集群的压力情况
可以看看有瓶颈时,这里的连接数是多少,然后去做限制。
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 天后被自动关闭。不再允许新回复。