数据库连接池最大连接数怎么配

关于数据库连接池最大连接数改配多少合适?网上百度说的是和服务器cpu核数有关,cpu核数*2+1,如果是核那就是9,取整我配了10,但是经过压测发现配20性能更好,这是为啥呢
ps:我们的业务就是一个很简单的查询接口

数据库连接池最大连接数的合适值取决于多个因素,包括但不限于:

  1. 服务器硬件配置:服务器的CPU、内存、磁盘等硬件配置对数据库连接池的最大连接数有影响。如果服务器硬件配置较高,可以适当增加连接池最大连接数。

  2. 数据库负载:如果数据库负载较高,需要适当增加连接池最大连接数,以保证数据库能够及时响应请求。

  3. 应用负载:如果应用负载较高,需要适当增加连接池最大连接数,以保证应用能够及时响应请求。

  4. 数据库连接池的实现方式:不同的数据库连接池实现方式对最大连接数的限制不同,需要根据具体情况进行调整。

在你的情况下,你可以根据实际情况进行调整,通过压测找到最佳的连接池最大连接数。如果你的业务是一个简单的查询接口,那么连接池最大连接数不需要设置得太高,一般来说,服务器CPU核数*2+1已经足够。但是,如果你的压测结果表明连接池最大连接数设置为20可以获得更好的性能,那么你可以考虑将连接池最大连接数设置为20。

现在的cpu支持htt或者smt,那么可以大一些,这个取决于经验值,并非一定。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1071234
  • 以下回答来自chatgpt:

    回答:

    对于数据库连接池最大连接数的配备,需要考虑以下因素:

    1.服务器硬件配置:比如CPU核数、内存大小等,这些因素会影响数据库的性能。

    2.应用程序的并发量:需要根据实际的应用程序并发量来调整最大连接数。

    3.数据库的实际性能瓶颈:需要通过性能测试来确定数据库的性能瓶颈在哪里,然后针对性地调整最大连接数。

    针对您的情况,您已经尝试了按照CPU核数*2+1来配备最大连接数,但在实际测试中发现配备20的性能表现更好。这种情况可能是因为:

    1.应用程序的并发量超出了您预期的范围,导致连接池中的连接不足,从而影响数据库的性能。

    2.您的服务器硬件配置比较高,可以支持更多的连接。

    建议您在配备最大连接数时,可以先根据硬件配置来确定一个基准值,然后通过性能测试来尝试不同的最大连接数,找到最优的值。在测试时,可以使用一些性能测试工具,比如JMeter、ab等,模拟实际应用程序的并发量。

    除此之外,还需要注意以下细节:

    1.需要保证数据库的性能瓶颈在连接池中,而不是其他地方。

    2.需要注意连接池的连接超时设置,避免因为连接超时导致连接不释放,从而影响数据库性能。

    代码方面,具体实现可以参考以下连接池的代码(以C3P0为例):

    DataSource dataSource = new ComboPooledDataSource();
    dataSource.setUser("user");
    dataSource.setPassword("password");
    dataSource.setJdbcUrl("jdbc:mysql://localhost/test");
    dataSource.setDriverClass("com.mysql.jdbc.Driver");
    dataSource.setInitialPoolSize(5);
    dataSource.setMaxPoolSize(20);
    dataSource.setMinPoolSize(5);
    dataSource.setCheckoutTimeout(1000);
    

    其中,setInitialPoolSize为初始连接数,setMaxPoolSize为最大连接数,setMinPoolSize为最小连接数,setCheckoutTimeout为连接超时时间。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^