반응형
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
https://dkswnkk.tistory.com/685
반응형
'WEB WAS > 미들웨어' 카테고리의 다른 글
톰캣 access.log, catalina.out (구성, 용량 설정) (0) | 2023.06.07 |
---|---|
Thread Dump, Heap Dump (시스템 장애 시 분석) (4) | 2023.06.07 |
mod_jk.so (Apache Tomcat Connector 모듈 파일) (0) | 2023.06.07 |
[CentOS 7] 아파치, 톰캣 연동 (mod_jk, Cent OS, Tomcat Connector) (1) | 2023.06.07 |
[CentOS 7] 아파치 톰캣 설치 및 실행 (jdk 설치, wget 활용) (0) | 2023.06.06 |