본문 바로가기

공부 기록/영상 후기

DBCP (DB connection pool)의 개념부터 설정 방법까지! hikariCP와 MySQL을 예제로 설명합니다!

https://youtu.be/zowzVqx3MQ4

DBCP(DataBase Connection Pool)

DB와 연결된 커넥션 풀을 API 요청에 따라 빌리고 반납하는 식으로 사용한다. 연결하고 끊는 것을 반복하는 것이 아니라 미리 맺어진 커넥션을 재사용하는 개념이기 때문에 열고 닫는 시간이 절약됨

  

DBCP 설정 방법

* DB connection은 백엔드 서버와 DB 서버 사이의 연결을 의미하기 때문에 백엔드 서버와 DB 서버 각각에서의 설정 방법을 잘 알고 있어야 한다.

* 아래의 파라미터를 적절하게 설정하는 것이 중요함

  

DB 서버 설정

- max_connections : 클라이언트와 맺을 수 있는 최대 커넥션 수

- wait_timeout : 커넥션이 inactive할 때 다시 요청이 오기까지 얼마의 시간을 기다린 뒤에 close할 것인지를 결정

DBCP 설정(백엔드 서버 쪽)

- minimumIdle : pool에서 유지하는 최소한의 idle(inactive) connection 수. 기본값은 maximumPoolSize와 동일

- maximumPoolSize : pool이 가질 수 있는 최대 커넥션 수. idle과 active(in-use) connection 합쳐서 최대 수

- maxLifetime : pool에서 커넥션의 최대 수명. maxLifetime을 넘기면 idle일 경우 pool에서 바로 제거, active인 경우 pool로 반환된 후 제거. DB의 connection time limit보다 몇 초 짧게 설정해야 함

- connectionTimeout : pool에서 connection을 받기 위한 대기 시간

  

적절한 커넥션 수를 찾는 과정

- 모니터링 환경 구축

- 백엔드 시스템 부하 테스트

- request per second, avg response time 확인

- 백엔드 서버, DB 서버의 CPU, MEM 등 리소스 사용율 확인

- thread per request 모델이라면 active thread 수 확인

- DBCP의 active connection 수 확인

- 사용할 백엔드 서버 수를 고려하여 DBCP의 max pool size 결정