WEB WAS/미들웨어

Connection pool

chanstory 2023. 6. 7. 13:31
반응형

Connection Pool 이란?

=> DB와 같은 외부 리소스에 대한 커넥션을 관리하는 기술

=> 어플리케이션에서 데이터베이스와의 연결을 관리

=> 커넥션을 효율적으로 사용하고 재사용 할 수 있게 해줌

 

사용 이유

=> was와 DB 간 커넥션을 맺는 것은 비용이 크다.
     매번 데이터 베이스에 연결하고 연결을 끊는 것은 성능 저하의 원인이 된다.

     이러한 이유로 인해 Connection Pool 이 사용됨

 

동작

=> was가 실행되면서 일정량의 Connection 객체를 미리 만들어두고 유지함

=> 어플리케이션이 DB에 접근해야 할 때, Pool에서 커넥션을 가져와 사용하고

     작업이 완료되면 반환함

 

장점

1. 서버 부하 감소
- DB Connection 을 맺는 과정이 부하가 많이 걸리는 작업임
  미리 Connection 을 생성하고 재활용하여 서버에 부하를 줄일 수 있음
2. 서버의 한정적 자원을 효율적으로 사용
- 요청이 올떄마다 Connection을 생성하는것이 아닌 정해진 숫자의 Connection만 생성하도록 제한
3. 연결 관리 및 최적화
- Connection 리스너를 통해 Connection의 상태를 관리하고 유지함.
- Connection 의 유효성을 검사하고 오류가 있는 Connection 제거 

 

단점

1. 자원 사용량
- Connection 수가 실제 필요한 수보다 많은 경우, 자원 낭비가 발생할 수 있음
2. 초기 연결 지연
- 처음 사용 시 초기 연결 설정을 해야함
- 모든 커넥션이 사용 중인 경우 새로운 커넥션을 기다려야 함
3. 오버헤드
- Connection에 대한 생성, 반환, 관리 등을 처리하는 추가적인 오버헤드를 발생시킴
이외 메모리 사용량 증가, 설정의 복잡성 등이 있음

 

 

Connection Pool 종류

Apache Commons DBCP
(Apache Commons Pool)
 - Apache software 재단에서 개발한 Connection Pool Library
HikariCP - 경량화된 고성능 JDBC Connection Pool 
- 빠른 시작 시간, 낮은 리소스 사용량, 효율적인 커넥션 관리 가 있음
- zero overhead 의 장점이 있음
  => 커넥션 획득,반환,관리 등에서 매우 효율적으로 처리하기 때문에 어플리케이션의 성능에 부담을 주지 않음
Tomcat JDBC Connection Pool - Tomcat 설정 파일에서 간편하게 구성 가능
- Apache Commons DBCP 라이브러리 바탕으로 만들어짐

 

 

WAS와 DB 간 Connection 맺는 과정

1 WAS 시작 WAS 가 시작 되면서 초기화 및 구성 단계 진행
2 DB 드라이버 로드 WAS는 사용할 DB에 대한 JDBC드라이버 로드
3 Connection Pool 설정 WAS에서 Connection Pool을 설정하여 DB 연결 관리
4 Connection 획득 DB에 연결이 필요한 경우, WAS는 사용 가능한 Connection 획득
5 인증 및 권한 확인 일부의 경우 DB 접근 전 사용자 인증 및 권한 확인 수행
6 DB 연결 DB 연결 및 어플리케이션과 DB 상호작용 담당
7 데이터 처리 DB 연결 후 어플리케이션은 SQL 쿼리 실행 및 처리
8 Connection 반환 Connection이 반환되고 다시 사용 가능 상태로 유지
9 WAS 종료 WAS가 종료되면 남아있는 모든 Connecetion이 반환되고 DB 연결이 닫힘

Connection Listener 란?

=> Connection Pool이나 데이터 베이스 연결 관리 시스템에서 사용되는 이벤트 리스너

 

Connection Listener 사용 예

1. Connection 획득

=> 커넥션 획득 시 발생하는 이벤트를 감지하여 로그 기록 및 초기화 작업 수행

2. Connection 반환

=> 커넥션 반환 시 정리 작업 수행 및 추가적인 로깅 수행

3. Connection 오류 발생 시

=> 커넥션 사용 중 오류 발생 시 이벤트 오류 처리나 재시도 등 작업 수행

 

 

 

참고

https://steady-coding.tistory.com/564

 

[데이터베이스] Connection Pool이란?

cs-study에서 스터디를 진행하고 있습니다. DB Connection DB를 사용하기 위해 DB와 애플리케이션 간 통신을 할 수 있는 수단 DB Connection은 Database Driver와 Database 연결 정보를 담은 URL이 필요함 Java의 DB Con

steady-coding.tistory.com

https://dkswnkk.tistory.com/685

 

DB 커넥션 풀(Connection Pool)과 Hikari CP

서론 Hikari는 데이터베이스와 애플리케이션을 연결해 주는 다양한 Connection Pool 오픈소스 라이브러리 중 하나입니다. 오늘 사내에서 어깨너머로 Hikari라는 용어를 듣게 되었는데, 처음 들은 용어

dkswnkk.tistory.com

 

반응형