DBCP 개념부터 설정방법까지

Y39·2023년 3월 23일
0

toBeProgrammer

목록 보기
65/88

개요

  • DB server과 Backend Application은 TCP 기반으로 통신
  • TCP
    • 장점: 높은 송수신 신뢰성
    • 단점: connection을 열고 닫을 때 시간이 많이 걸린다.
      • 계속 요청을 할 때 마다 계속 connection으로 시간을 쓰게됨.

connection pool

  • connection pool을 이용해서 open과 close를 간소화
  1. connection pool과 DB Server을 미리 connect 시킨다.
  2. open 시에 connection pool에서 connection을 가져옴
  3. close 시에 connection pool에 반납
    => connection을 재사용

DBCP: DB connection pool

  • mysql과 springboot의 HikariCP로 설명

DB 서버 설정(hikari CP)

max_connections

: client(back)와 맞을 수 있는 최대 connection 수

  • 과부하가 생겼을 때 max_connections가 부족해서 불상사가 일어 날 수 있다.

wait-timeout

: connection이 inactive(쉬고있음)일 때 다시 요청이 올 때까지 얼마나 기다렸다가 close할 것인가? DB server측의 connection을 제거하는 것

  • 버그나 다른 이유로 connection이 반환되지 않을 경우 DB에서 close해버리는 설정

DBCP 설정

minimumIdle

: Idle connection(대기중인)의 최소 개수

maximumPoolSize

: pool connection이 가질 수 있는 total 최대 connection

  • maximumPoolSize까지 도달할 때 까지 Idle connecion을 계속해서 늘리는 형식으로 성능을 높힘.
  • 일이 모두 끝나면 minimumIdle만큼 남기고 connection을 삭제
  • minimumIdle과 macimumPoolsize를 같게 설정하라고 권장
    • connection을 추가하는게 절대 빠르지 않기 때문에 오히려 성능 저하를 일으킬 수 있음.

maxLifetime

: 주어진 시간이 지나면 connection 제거, 단 pool로 반환 되었을 때에만 해당

  • wait_timeout보다 몇 초 짧게 설정하는 것을 권장
    • connection이 일을 하는 중에 wait_timeout으로 DB쪽 connection이 끊기는 사태를 방지하기 위함

hikari CP

profile
System.out.print("Bold")

0개의 댓글