java - Spring Boot 连接池配置最佳实践

标签 java spring spring-boot connection-pooling hikaricp

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

我正在为不同的设置准备自己的性能测试,但希望得到任何帮助。应用程序节点的平均吞吐量约为 20 个请求/秒

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

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

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

最佳答案

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

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

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

关于java - Spring Boot 连接池配置最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47633875/

相关文章:

spring - Tomcat 或 Spring Suite Tool 的默认服务器不在 Simple Spring Web Maven 项目中运行

spring - 当我在 Spring Boot 应用程序中使用 CommonsMultipartResolver 时,MultipartFile 为 null

spring-boot - 具有 Spring-Boot 和发布管理的微服务

Java Streams GroupingBy 和按计数过滤(类似于 SQL 的 HAVING)

java - 如何在 jsf 1.2 中使用 DynamicJasper

java - 在 JPanel 中居中放置多个 JLabel

java - @NotNull 不始终与 MethodValidationPostProcessor 一起运行

java - 如何使用 spring-boot 创建 REST 服务?

Java数组列表覆盖添加的数据并仅放置最后添加的项目

java - 静态 Transport.send() 方法如何管理其连接?