Spring boot/Amazon PostgreSQL RDS 连接池问题
Spring boot/Amazon PostgreSQL RDS connection pool issue
我正在对连接到 PostgreSQL 数据库的 Spring 引导应用程序的问题进行故障排除。该应用程序运行正常,但在相当适中的负载下,它将开始记录如下错误:
java.sql.SQLException: Timeout after 30000ms of waiting for a connection.
这是连接到 PostgreSQL RDS 的 Amazon EC2 实例上的 运行。该应用程序配置如下:
spring.datasource.url=jdbc:postgresql://[rds_path]:5432/[db name]
spring.datasource.username=[username]
spring.datasource.password=[password]
spring.datasource.max-active=100
在 AWS 控制台中,我看到 60 个活动的数据库连接,但这是跨多个 Spring 启动应用程序(不是所有这个应用程序)。当我使用 pg_stat_activity 查询数据库以获取当前 activity 时,我看到除一两个连接外的所有连接都处于空闲状态。 Spring 启动应用程序似乎没有使用所有可用连接?或者以某种方式泄漏连接?我正在尝试解释 pg_stat_activity 如何显示如此多的空闲连接,而应用程序仍然会出现连接池超时。
想通了。 Spring 正在使用 Hikari 数据库连接池(直到更仔细地检查堆栈跟踪后才意识到这一点)。 Hikari 配置参数有不同的名称,您可以使用 maximum-pool-size 来设置池大小。更新了那个,问题解决了。
我正在对连接到 PostgreSQL 数据库的 Spring 引导应用程序的问题进行故障排除。该应用程序运行正常,但在相当适中的负载下,它将开始记录如下错误:
java.sql.SQLException: Timeout after 30000ms of waiting for a connection.
这是连接到 PostgreSQL RDS 的 Amazon EC2 实例上的 运行。该应用程序配置如下:
spring.datasource.url=jdbc:postgresql://[rds_path]:5432/[db name]
spring.datasource.username=[username]
spring.datasource.password=[password]
spring.datasource.max-active=100
在 AWS 控制台中,我看到 60 个活动的数据库连接,但这是跨多个 Spring 启动应用程序(不是所有这个应用程序)。当我使用 pg_stat_activity 查询数据库以获取当前 activity 时,我看到除一两个连接外的所有连接都处于空闲状态。 Spring 启动应用程序似乎没有使用所有可用连接?或者以某种方式泄漏连接?我正在尝试解释 pg_stat_activity 如何显示如此多的空闲连接,而应用程序仍然会出现连接池超时。
想通了。 Spring 正在使用 Hikari 数据库连接池(直到更仔细地检查堆栈跟踪后才意识到这一点)。 Hikari 配置参数有不同的名称,您可以使用 maximum-pool-size 来设置池大小。更新了那个,问题解决了。