Apache Tomcat 5.5 + DBCP + Oracle 이용시 maxActive 설정값 동
안녕하세요. 매일 눈팅만 하던 자유연애 입니다. ^^
다름이 아니라, 이번에 Apache Tomcat 5.5.x 버전을 가지고 Web application을 개발하게 되었는데 Oracle을 DB로 사용하게 되어 DBCP를 설정하였습니다.
connection을 얻어오고, 그 connection을 통해 query 수행은 정상적으로 가능하지만 다음과 같은 문제를 해결할 수 없어 질문을 올립니다.
1. maxActive 값의 의미?
현재 maxActive=20, maxIdle=10으로 설정해놓고 Apache jmeter를 이용하여 thread 개수를 10개로 간단한 테스트 페이지를 돌렸습니다.
근데 부하를 걸고 있는 상태에서 TCP Socket 상태를 모니터링 해보니 DB 서버로 연결되어 있는(ESTABLISHED) TCP connection 수가 20개로 제한되는 것이 아니라 100여개가 넘어가기도 합니다.
제 생각에는 다음과 같은 maxActive의 정의에 따르면 20개로 제한이 되어야 하는 것이 맞는 것 같은데 왜 그럴까요?
"The maximum number of active connections that can be allocated from this pool at the same time, or zero for no limit. "
참고로 테스트를 하였던 개발 서버에서는 다른 application이 수행된 것이 없습니다.
2. DB서버 oracle port(1521) 으로의 TIME_WAIT connection 증가
1번과 같은 사항과 동시에 해당 DB 서버의 Oracle port로 TIME_WAIT 상태의 connection 개수가 많이 보이더군요.
일반적으로 connection pool 이라하면, maxActive가 다 사용이 될때까지 DB 연결을 한 후 maxActive가 넘어서게 되면 내부적으로 queuing을 하던지, exception을 return해야할 것 같은데.
이와 같은 동작을 하는 것은 DBCP 구현 자체의 특성일까요?
이전에 resin 등을 이용할 때(그때도 DBMS는 Oracle)에는 이런 현상이 보이지 않았었는데, Tomcat + DBCP로 바꾸니 1, 2번 현상이 발생하여 좀 당황스럽습니다.
제가 아직 설정을 마스터 하지 못해 발생하는 문제인지(아마도 그럴 것이라 생각하고, 그래야할 것으로 생각합니다.), DBCP의 특성인지 여러 고수님들의 고견을 듣고 싶습니다.
혹시 비슷한 경험을 해보셨던 분 있으시면 경험담을 들려주세요.
수고하세요.
나도 그런경우가 지금 있어요...
나도 그런일로 지금 오유가 나오네요..
저는 c3p0을 이용하는데 우와 같은 문제가 생겨요,,\\
아시면 저한테도 연락을 주세요..
댓글 달기