사용자 도구

사이트 도구


java:database:connectionpool

문서의 이전 판입니다!


Java JDBC Connection Pool / DataSource

DataSource 초기화

  • DataSource 객체를 생성한다 해도 실제 connection을 맺기 전까지는 DB 접속을 하지 않는다.
  • SpringFramework BeanBeanPostProcessor#postProcessAfterInitialization를 사용하여 DataSource Bean이 모두 생성 완료 된 뒤에 Bean의 실제 구현체 클래스 여부(예를들어 DBCP의 경의 BasicDataSource)를 확인하여 dataSource.getConnection()을 맺고 끊어주면 Spring Application이 다 뜨기 전에 미리 최소한의 커넥션이 맺어진 상태의 DataSource가 되어 서비스 오픈 직후 갑작스런 트래픽에 대응할 수 있게 된다.
  • 혹은 Map<String, DataSource> dataSources로 모든 DataSource를 Injection 받은 Bean에서 @PostConstruct로 초기화 할 수도 있다.

기본 설정

  • 커넥션의 최대 생존시간(보통 maxAge)를 항상 설정한다.
  • maxActivemaxIdle을 동일하게 설정해야 할 것 같음. 안 그러면 부하가 몰렸다가 빠질 때 maxIdle이 작을 경우 커넥션을 일괄 반환하는 일이 생길 것으로 예상됨. pool별로 확인 필요.

참조

java/database/connectionpool.1520310550.txt.gz · 마지막으로 수정됨: 2018/03/06 12:59 저자 kwon37xi