看来我的服务存在数据库连接泄漏。昨天重新部署后,我提到有 27 个打开的与 postgres 数据库的连接。今天早上他们60岁了。
对我的数据库执行此查询,我看到某些连接的最后使用时间只是昨天。
SELECT * FROM pg_stat_activity
ORDER BY state_change DESC
似乎我的 jdbcTemplate 应该关闭它们,但它没有这样做。
这是我的配置
@Configuration
public class DatabaseConfiguration {
// reading data from application properties
// ........
private DataSource configureDataSource(String url, String user, String password, String driverClassName){
DataSource ds = DataSourceBuilder.create()
.url(url)
.username(user)
.password(password)
.driverClassName(driverClassName)
.build();
org.apache.tomcat.jdbc.pool.DataSource configuredDataSource = (org.apache.tomcat.jdbc.pool.DataSource) ds;
configuredDataSource.setTestWhileIdle(connectionTestWhileIdle);
configuredDataSource.setValidationQuery( connectionValidationQuery);
configuredDataSource.setTimeBetweenEvictionRunsMillis(
toIntExact(connectionTimeBetweenEvictionRunsMillis));
return configuredDataSource;
}
@Bean(name = "qaDataSource")
public JdbcTemplate getQaJdbcTemplate() {
DataSource ds = configureDataSource(qaURL, qaUsername, qaPassword ,qaDriverClassName);
return new JdbcTemplate(ds);
}
任何想法我的配置有什么问题?或者也许这是错误的数据库配置。