[MySQL] HikariCP Connection Pool 관리 예.
ITWeb/개발일반 2021. 8. 9. 08:12
HikariCP 를 사용하고 있는데 Connection Pool 에 대한 반납과 재사용이 원활 하지 않을 때가 있습니다.
Application 내부에서 사용과 반납을 너무 빈번하게 하고 있을 경우 이런 문제가 발생 하는 것 같습니다.
보통은 별 문제 없이 사용을 했으나 이런 문제가 발생 한다면 명시적으로 Close 를 해주고 다시 Connection 을 생성해 주면 문제를 해소 할 수 있습니다.
기억하기 위해 기록 합니다.
config.setDriverClassName("com.mysql.cj.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://....");
config.setUsername(user);
config.setPassword(pwd);
config.setMaximumPoolSize(maxPoolSize);
config.setMinimumIdle(minimumIdle);
config.setConnectionTimeout(30000);
config.setValidationTimeout(10000);
config.setConnectionTestQuery("SELECT 1");
config.addDataSourceProperty("autoReconnect", "true");
config.addDataSourceProperty("serverTimezone", "Asia/Seoul");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
config.addDataSourceProperty("dataSource.useServerPrepStmts", "true");
config.addDataSourceProperty("characterEncoding","utf8");
config.addDataSourceProperty("useUnicode","true");
this.ds = new HikariDataSource(config);
getConnection() 은 pool 에서 얻어 옵니다.
getConnection().close() 하면 pool 을 반납 하게 됩니다.
근데 이게 반납과 재사용이 잘 안된다. 그러면 ds.close() 하고 다시 connection 을 생성 합니다. (HikariDataSource ds)