4

我在我的 pom.xml-dependencies 中使用版本:2.1.6.RELEASE form Spring Boot。要连接到我的数据库,我在 application.properties 中添加了以下内容:

spring.datasource.url= jdbc:postgresql://
spring.datasource.username=
spring.datasource.password=

在使用以下命令检查 postgresql 中的连接数量时:

SELECT * FROM pg_stat_activity;

我看到每次启动应用程序时都会建立 10 个连接。他们几乎都有相同的查询:

SET application_name = 'PostgreSQL JDBC Driver'

有没有办法阻止应用程序建立那么多连接?我应该进行自己的池配置吗?我的 Java 应用程序中的哪些资源会初始化这些连接?

我唯一能想到的是,我使用 @Autowired 注释创建 EntityManager(s),EntityManager 来自:

javax.persistence.EntityManager;

但是我读到您应该只在使用 EntityManagerFactory 时关闭此连接。注释应该关闭连接。

如果您需要更多信息,我可以编辑我的帖子

4

3 回答 3

7

HikariCP默认开启10个空闲连接,

默认值:10

您可以覆盖不太推荐的minimumIdle

HikariCP 将尽最大努力快速有效地添加额外的连接。但是,为了获得最大性能和对峰值需求的响应,我们建议不要设置此值,而是允许 HikariCP 充当固定大小的连接池。默认值:与 maximumPoolSize 相同

maximumPoolSize,但会影响连接池的最大大小

此属性控制池允许达到的最大大小,包括空闲和使用中的连接。

于 2019-08-08T13:34:10.913 回答
5

这不是连接泄漏,而是所需的行为。Spring Boot Data 使用 HikariCP 作为连接池。

您可以将最大池大小配置为属性。例如:

spring.datasource.hikari.maximum-pool-size=5
于 2019-08-08T13:31:42.887 回答
1

HikariCP 默认最多有 10 个连接。

您可以像这样配置最大池大小:

spring.datasource.hikari.maximum-pool-size=5

要启用跟踪日志:

logging.level.com.zaxxer.hikari.HikariConfig=DEBUG
logging.level.com.zaxxer.hikari=TRACE
于 2021-06-25T12:31:33.763 回答