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 作为固定大小的池以获得最佳性能(保留 minimumIdle 和 idleTimeout 未设置) . maximumPoolSize 可能是您需要调整的关键数字,正如上面引用的 link 所说,它主要取决于 数字您的数据库服务器拥有 CPU 个内核。
平均查询时间为 2 毫秒,即使单个连接也可以处理 ~500 req/sec,而平均查询时间为 10 毫秒的每个连接将产生 ~100 req/sec。但是,以单个请求为代价可能要等待一秒钟才能得到服务。在这种情况下,额外的连接将有助于减少请求的排队时间。
我正在为 Spring 引导应用程序和 Postgres DB 配置 JDBC 连接池以使用 HikariCP 连接池并尝试找到配置设置的最佳实践,不幸的是没有太多关于这个主题的信息在网络上。
我正在为不同的设置准备自己的性能测试,但希望得到任何帮助。应用程序节点
的平均吞吐量约为 20 req/sec我对以下属性的最佳值最感兴趣:
minimumIdle: ?
maximumPoolSize: ?
idleTimeout: ?
maxLifetime: ?
connectionTimeout: ?
特别是知道 maximumPoolSize
的最佳值会很棒
有许多其他选项可用于连接池设置,如有任何关于它们对应用程序性能影响的建议,我们将不胜感激。
@aliaksei-stadnik 20 req/sec 在宏伟的计划中,相当低。所以,我不会过分担心池调整;更重要的是关注查询性能。您的查询时间越短,您可以使用更少的连接数处理更多的请求。
我们始终推荐 运行 HikariCP 作为固定大小的池以获得最佳性能(保留 minimumIdle 和 idleTimeout 未设置) . maximumPoolSize 可能是您需要调整的关键数字,正如上面引用的 link 所说,它主要取决于 数字您的数据库服务器拥有 CPU 个内核。
平均查询时间为 2 毫秒,即使单个连接也可以处理 ~500 req/sec,而平均查询时间为 10 毫秒的每个连接将产生 ~100 req/sec。但是,以单个请求为代价可能要等待一秒钟才能得到服务。在这种情况下,额外的连接将有助于减少请求的排队时间。