Spring 引导连接池配置的最佳实践

Best practices for Spring Boot connection pool configuration

我正在为 Spring 引导应用程序和 Postgres DB 配置 JDBC 连接池以使用 HikariCP 连接池并尝试找到配置设置的最佳实践,不幸的是没有太多关于这个主题的信息在网络上。

我正在为不同的设置准备自己的性能测试,但希望得到任何帮助。应用程序节点

的平均吞吐量约为 20 req/sec

我对以下属性的最佳值最感兴趣:

    minimumIdle: ?
    maximumPoolSize: ?
    idleTimeout: ?
    maxLifetime: ?
    connectionTimeout: ?

特别是知道 maximumPoolSize 的最佳值会很棒 有许多其他选项可用于连接池设置,如有任何关于它们对应用程序性能影响的建议,我们将不胜感激。

@aliaksei-stadnik 20 req/sec 在宏伟的计划中,相当低。所以,我不会过分担心池调整;更重要的是关注查询性能。您的查询时间越短,您可以使用更少的连接数处理更多的请求。

我们始终推荐 运行 HikariCP 作为固定大小的池以获得最佳性能(保留 minimumIdleidleTimeout 未设置) . maximumPoolSize 可能是您需要调整的关键数字,正如上面引用的 link 所说,它主要取决于 数字您的数据库服务器拥有 CPU 个内核。

平均查询时间为 2 毫秒,即使单个连接也可以处理 ~500 req/sec,而平均查询时间为 10 毫秒的每个连接将产生 ~100 req/sec。但是,以单个请求为代价可能要等待一秒钟才能得到服务。在这种情况下,额外的连接将有助于减少请求的排队时间。