JDBC connection 속도 지연 문의
- 작성자 :
- 임*균
- 작성일 :
- 2010-07-26 11:31:28
- 조회수 :
- 4,047
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요.
국세청 ITSM 프로젝트를 진행하고 있는 임상균이라고 합니다.
저번에 질문에 대한 답변중에 pooling을 확인해 보라고 하셨는데요.
구체적으로 어느 설정을 확인해 봐야 하는지 궁금합니다.
지금 설정파일은 아래와 같습니다.
<!-- oracle -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /-->
<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy"/>
<property name="url" value="jdbc:log4jdbc:oracle:thin:@xxxxxxxxxx:1521:ACDB"/>
<property name="username" value="xxxx"/>
<property name="password" value="xxxx"/>
<property name="initialSize" value="5"/>
<property name="maxIdle" value="5"/>
<property name="maxActive" value="10"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
=====================================
첫번째 질문입니다.
=====================================
첨부한 파일에 보시는 것처럼
톰캣 기동후 첫번쨰 쿼리만 오래 걸립니다. (1분 정도)
2번째 쿼리 부터는 정상적입니다.
어떤 이유일까요?
------------
안녕하세요. 임상균님.
datasource 에서 connection을 얻어올때 속도가 지연되는 듯 싶습니다.
사용하신 datasource 에서의 pooling 시점등을 확인하여 주시기 바랍니다.
즐거운 하루되세요. 감사합니다.
국세청 ITSM 프로젝트를 진행하고 있는 임상균이라고 합니다.
저번에 질문에 대한 답변중에 pooling을 확인해 보라고 하셨는데요.
구체적으로 어느 설정을 확인해 봐야 하는지 궁금합니다.
지금 설정파일은 아래와 같습니다.
<!-- oracle -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /-->
<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy"/>
<property name="url" value="jdbc:log4jdbc:oracle:thin:@xxxxxxxxxx:1521:ACDB"/>
<property name="username" value="xxxx"/>
<property name="password" value="xxxx"/>
<property name="initialSize" value="5"/>
<property name="maxIdle" value="5"/>
<property name="maxActive" value="10"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
=====================================
첫번째 질문입니다.
=====================================
첨부한 파일에 보시는 것처럼
톰캣 기동후 첫번쨰 쿼리만 오래 걸립니다. (1분 정도)
2번째 쿼리 부터는 정상적입니다.
어떤 이유일까요?
------------
안녕하세요. 임상균님.
datasource 에서 connection을 얻어올때 속도가 지연되는 듯 싶습니다.
사용하신 datasource 에서의 pooling 시점등을 확인하여 주시기 바랍니다.
즐거운 하루되세요. 감사합니다.
A
안녕하세요 임상균님
org.apache.commons.dbcp.BasicDataSource를 데이터 소스로 사용한 경우, getConnection, setLogwriter, setLoginTimeout, getLoginTimeout, getLogWriter 메서드가 실행된 이후에 초기화를 한다고 명시되어 있습니다. ( 출처 : http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/BasicDataSource.html )
따라서 일반적인 WAS의 DataSource와 달리, dbcp의 DataSource는 첫번째 쿼리가 실행될 때 초기화 되는 것으로 생각됩니다. 이런 경우, 운영시에는 문제가 없으나 개발환경에서 불편이 있을 수 있으므로 커넥션 개수를 최소화 하고 WAS 에서 제공하는 DataSource를 JNDI 방식으로 이용하는 것도 한 방법이라 생각됩니다.
다양한 DataSource를 설정하는 방법을 아래 가이드에서 제공하고 있으니 참조하시어 최적의 조건을 찾으시기 바랍니다.
가이드: http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:psl:data_source
감사합니다.
org.apache.commons.dbcp.BasicDataSource를 데이터 소스로 사용한 경우, getConnection, setLogwriter, setLoginTimeout, getLoginTimeout, getLogWriter 메서드가 실행된 이후에 초기화를 한다고 명시되어 있습니다. ( 출처 : http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/BasicDataSource.html )
따라서 일반적인 WAS의 DataSource와 달리, dbcp의 DataSource는 첫번째 쿼리가 실행될 때 초기화 되는 것으로 생각됩니다. 이런 경우, 운영시에는 문제가 없으나 개발환경에서 불편이 있을 수 있으므로 커넥션 개수를 최소화 하고 WAS 에서 제공하는 DataSource를 JNDI 방식으로 이용하는 것도 한 방법이라 생각됩니다.
다양한 DataSource를 설정하는 방법을 아래 가이드에서 제공하고 있으니 참조하시어 최적의 조건을 찾으시기 바랍니다.
가이드: http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:psl:data_source
감사합니다.