美文网首页
mysql连接池大小到底多少合适?

mysql连接池大小到底多少合适?

作者: 会飞的蜗牛F | 来源:发表于2020-07-14 16:47 被阅读0次

    连接数计算公式

    下面公式由 PostgreSQL 提供,不过底层原理是不变的,它适用于市面上绝大部分数据库产品。还有,你应该模拟预期的访问量,并通过下面的公式先设置一个偏合理的值,然后在实际的测试中,通过微调,来寻找最合适的连接数大小。

    连接数 = ((核心数 * 2) + 有效磁盘数)

    核心数不应包含超线程(hyper thread),即使打开了超线程也是如此,如果热点数据全被缓存了,那么有效磁盘数实际是0,随着缓存命中率的下降,有效磁盘数也逐渐趋近于实际的磁盘数。另外需要注意,这一公式作用于SSD 的效果如何,尚未明了。

    好了,按照这个公式,如果说你的服务器 CPU 是 4核 i7 的,连接池大小应该为 ((4*2)+1)=9

    取个整, 我们就设置为 10 吧。你这个行不行啊?10 也太小了吧!

    image

    你要是觉得不太行的话,可以跑个性能测试看看,我们可以保证,它能轻松支撑 3000 用户以 6000 TPS 的速率并发执行简单查询的场景。你还可以将连接池大小超过 10,那时,你会看到响应时长开始增加,TPS 开始下降。

    结论:你需要的是一个小连接池,和一个等待连接的线程队列

    假设说你有 10000 个并发访问,而你设置了连接池大小为 10000,你怕是石乐志哦。

    改成 1000,太高?改成 100?还是太多了。

    你仅仅需要一个大小为 10 数据库连接池,然后让剩下的业务线程都在队列里等待就可以了。

    连接池中的连接数量大小应该设置成:数据库能够有效同时进行的查询任务数(通常情况下来说不会高于 2*CPU核心数)。

    你应该经常会看到一些用户量不是很大的 web 应用中,为应付大约十来个的并发,却将数据库连接池设置成 100, 200 的情况。请不要过度配置您的数据库连接池的大小。

    原文source 求求你,别再乱改连接池大小了!

    相关文章

      网友评论

          本文标题:mysql连接池大小到底多少合适?

          本文链接:https://www.haomeiwen.com/subject/gvsfhktx.html