Spring DBCP란

한민기·2024년 7월 31일

Spring

목록 보기
1/8

1. DBCP란

Database Connection Pool로 데이터 베이스 연결하는 커넥션 풀
여러개의 Connection을 하나의 Pool에 모아두어 관리
데이터 베이스 연결을 관리하고 효율적으로 재사용하기 위함

2. 설정 항목

ParameterDefaultDescription
initialSize0최초 connection pool 시작될 때 초기 Connection 개수
maxTotal8최대로 사용할 수 있는 Connection 개수
maxIdle8Connection pool에 반납할 때 최대 유지될 수 있는 Connection 수
minIdle0최소한으로 유지될 Connection 수
maxWaitMillisindefinitely풀이 예외를 발생시키기 전에 연결이 반환될 때까지 대기하는 시간(밀리초 단위)
validationQueryConnection pool에 Connection을 반환하기 전에 해당 풀의 연결여부를 확인mysql : select 1oracle : select 1 from dual
testOnBorrowtruepool에서 Connection을 사용하기 위해서(Connction pool에서 Connection 얻어올 때) 유효성 검사 여부
testOnReturnfalseConnection을 pool에 반환할 때 유효성 검사 여부
maxConnLifetimeMillis-1 (무한대)커넥션의 최대 라이프타임을 지정
lifotrue최근에 반환한 Connection을 가장 우선 대여해 줍니다.

3. 최적화

  • WAS == Tomcat 은 Thread Pool을 사용
    1 Request -> 1 Thread 처리
    100 Request -> 100 Request 처리
    Default = 200개(즉 tomcat 기본설정을 사용한다면 동시에 최대 200개까지 처리할 수 있음)
    DBCP parameter를 WAS의 Thread Pool Size로 고정하여 최적화.

4. Spring에서 설정하는 법

application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/my_database
    username: user
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: org.apache.commons.dbcp2.BasicDataSource
    dbcp2:
      initial-size: 200
      max-total: 200
      max-idle: 200
      min-idle: 200
      test-on-borrow: true
      validation-query: SELECT 1

해당하는 url, username, password 등 정보 입력

참고

profile
백엔드 개발자

0개의 댓글