brunch

You can make anything
by writing

C.S.Lewis

by 이동인 Mar 17. 2020

DBCP 설정 확인하기

Application Monitoring

DBCP(DataBase Connection Pool)는 데이터베이스와 애플리케이션을 효율적으로 연결하는 라이브러리입니다. 커넥션 풀 라이브러리의 하나인 DBCP를 잘 사용하면 데이터베이스와 애플리케이션의 연결에서 문제가 발생하지 않지만 설정을 잘못한 경우 애플리케이션의 성능을 떨어뜨리는 병목 지점이 될 수도 있습니다. 


JDK와 DBCP 버전

DBCP는 각각의 JDBC를 지원하기 위해 네 가지 버전으로 제공됩니다.  

DBCP now comes in four different versions to support different versions of JDBC.   
* DBCP 2.7.0 compiles and runs under Java 8 only (JDBC 4.2)
* DBCP 2.6.0 compiles and runs under Java 8 only (JDBC 4.2)
* DBCP 2.5.0 compiles and runs under Java 8 only (JDBC 4.2)
* DBCP 2.4.0 compiles and runs under Java 7 only (JDBC 4.1)
* DBCP 1.4 compiles and runs under Java 6 only (JDBC 4)
* DBCP 1.3 compiles and runs under Java 1.4-5.0 only (JDBC 3)

예를 들면 DBCP 1.3은 Java 1.4에서 5.0 사이의 버전에서 컴파일 될수 있습니다. JDK 6을 사용하면서 Commons DBCP 1.3.x를 사용한다면 JDBC 4에 추가된 SQLTimeoutException 등을 드라이버에서 전달할 때 Commons DBCP가 정교하게 처리하지 못해 오류 파악하기 어려울 수 있습니다.(Common DBCP이해하기


DBCP 버전과 속성값

많은 웹 애플리케이션 서버를 관리하는 것은 쉬운 일이 아닙니다. DBCP의 속성을 잘못 설정하면 성능 저하가 발생하기도 합니다. 장애 예방을 위해 와탭 애플리케이션 모니터링 서비스에서는 아래와 같이 DBCP 설정값을 확인하는 페이지를 제공하고 있습니다. 

"와탭 애플리케이션 모니터링 > 에이전트 설정 > DB 상태"에서 DBCP의 모든 설정값을 확인할 수 있습니다. 


DBCP 속성값들 중에서 성능에 영향을 줄수 있는 속성은 아래와 같습니다. 

* initialSize : 풀이 시작될 때 생성되는 커넥션의 개수 (default = 0)
* maxTotal (1.x에서는 maxActive): 동시에 허용가능한 최대 커넥션 개수 (default = 8)
* maxIdle : 유휴 상태로 유지될 수 있는 최대 커넥션 개수 (default = 8)
* minIdle : 유휴 상태로 유지될 수 있는 최소 커넥션 개수 (default = 0)
* maxWaitMillis (1.x에서는 maxWait) : 최대 대기 시간 (ms단위, default = -1 = 무한정) 


maxTotal 값 설정을 잘못한 경우

maxTotal 값이 너무 작은 경우 많은 스레드가 대기하게 됩니다. 그리고 Timeout과 함께 진행중인 스레드가 종료됩니다. 그런 경우 와탭 애플리케이션 모니터링에서는 아래와 같은 형태를 보여주게 됩니다. 아래는 10초 타임아웃이 예상되는 형태입니다. 

와탭 애플리케이션 모니터링 서비스에서는 병목 지점의 스택 덤프를 보여주는 "액티브스택"이 있습니다. 해당 액티브스택에서 "BasicDataSource.getConnection()" 메서드가 병목 지점에 있다면 DBCP의 설정값을 확인해 보는 것이 좋습니다. 


마무리 

커넥션풀은 성능에 영향을 주는 요소입니다. DBCP의 설정으로 인한 문제들은 막상 원인을 알고 나면 쉽지만 어떤 경우에서는 몇일을 고생해도 알아내지 못하는 경우가 있습니다. 하지만 애플리케이션 모니터링 서비스를 사용한다면 이런 이슈들을 쉽게 알아낼 수 있습니다. 


작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari