HikariCP
HikariCP는 Java 응용 프로그램에서 JDBC Connection Pool을 제공하는 가볍고 고성능의 커넥션 풀 라이브러리입니다. Spring Boot는 기본적으로 HikariCP를 데이터베이스 연결 풀로 사용합니다.
HikariCP의 주요 특징
- 경량성과 속도: HikariCP는 적은 메모리를 사용하며, 높은 처리량과 짧은 응답시간을 제공합니다.
- 빠른 커넥션 생성: 빠른 속도로 새로운 커넥션을 생성하고 관리합니다.
- 최소 설정: 복잡한 설정 없이도 기본적으로 최적화된 환경에서 작동합니다.
- 유연한 커스터마이징: 고급 사용자 정의 설정을 통해 애플리케이션 요구사항에 맞게 조정할 수 있습니다.
- JDBC 표준 준수: JDBC 인터페이스를 따르며, Spring Boot 및 다양한 ORM 라이브러리와의 호환성이 뛰어납니다.
Spring Boot에서 HikariCP 기본 설정
Spring Boot에서 HikariCP는 spring-boot-starter-data-jpa 또는 spring-boot-starter-jdbc 의존성을 추가하면 자동으로 설정됩니다.
HikariCP의 기본 구성 파일 예제 (application.yaml)
1
2
3
4
5
6
7
8
9
10
11
12
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 30000
max-lifetime: 1800000
connection-timeout: 20000
pool-name: MyHikariCPPool
HikariCP 관련 로그
Spring Boot 애플리케이션을 실행하면 HikariCP 관련 로그가 출력될 수 있습니다. 로그는 주로 HikariCP의 초기화 및 상태 정보를 나타냅니다.
예제 로그
2023-12-06 10:00:00.123 INFO 12345 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariCPPool - Starting...
2023-12-06 10:00:00.456 INFO 12345 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariCPPool - Start completed.
디버그 로그 활성화
HikariCP의 상세 로그를 확인하려면 application.yml에 로그 레벨을 설정하세요.
1
logging.level.com.zaxxer.hikari: DEBUG
이 설정을 통해 HikariCP의 커넥션 풀링 동작에 대한 세부 로그를 확인할 수 있습니다.
HikariCP 커스터마이징 방법
DataSource를 직접 구성하거나 Spring Boot의 기본 설정을 오버라이드할 수 있습니다.
Java Config에서 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("root");
config.setPassword("password");
config.setMaximumPoolSize(20);
config.setMinimumIdle(5);
config.setIdleTimeout(30000);
config.setMaxLifetime(1800000);
config.setConnectionTimeout(20000);
config.setPoolName("CustomHikariCPPool");
return new HikariDataSource(config);
}
}
HikariCP 사용 시 주의점
- 최대 풀 크기 설정 (maximum-pool-size):
- 지나치게 큰 값으로 설정하면 메모리 사용량이 늘어나고, 너무 작은 값으로 설정하면 커넥션 부족으로 성능 문제가 발생할 수 있습니다.
- 데드락 방지:
- 커넥션 누수를 방지하기 위해 애플리케이션에서 반드시 커넥션을 닫아야 합니다.
- 적절한 타임아웃 설정:
- connection-timeout과 idle-timeout 값을 적절히 설정하여 성능을 최적화 해야합니다.
HikariCP는 기본적으로 고성능으로 동작하므로, 설정을 변경하기 전 기본값으로 테스트하고 필요에 따라 커스터마이징하는 것이 좋습니다.
This post is licensed under CC BY 4.0 by the author.