2009-06-03 8 views
0

연결 풀링을 사용하여 Oracle9i 릴리스 9.2.0.4 데이터베이스에서 데이터베이스 연결을 사용하는 응용 프로그램이 있습니다. 응용 프로그램은 SJSAS 8.1에서 호스팅되며 드라이버는 ojdbc14.jar 버전 10.1.0.4입니다.JDBC getConnection 시간 초과 문제

내가 가지고있는 문제는 datasource.getConnection()입니다. DB가 다운되었을 때 예외를 throw하는 데 약 40 초가 걸립니다. 이로 인해 DB 중단 중에 응용 프로그램에 과부하가 발생합니다. 데이터 소스로 LoginTimeout=8 설정을 시도했지만 효과가 없습니다.

내가 어떤 사람이 도움을 주시기 바랍니다 수

<jdbc-connection-pool connection-validation-method="table" 
         datasource-classname="oracle.jdbc.pool.OracleDataSource" 
         fail-all-connections="true" 
         idle-time out-in-seconds="600" 
         is-connection-validation-required="true" 
         is-isolation-level-guaranteed="false" 
         max-pool-size="100" 
         max-wait-time-in-millis="8000" 
         name="mydb" 
         pool-resize-quantity="80" 
         res-type="javax.sql.DataSource" 
         steady-pool-size="20" 
         validation-table-name="dual"> 
    <property name="url" value="jdbc:oracle:thin:@server1:1521:mydb"/> 
    <property name="user" value="user1"/> 
    <property name="LoginTimeout" value="8"/> 
    <property name="password" value="pass1"/> 
</jdbc-connection-pool> 

를 사용하고 데이터 소스 아래를 참조하십시오? 주어진 시간 초과로 시간 초과하려면 getConnection() 메소드가 필요합니다.

답변

0

는 여기에 몇 가지 시도이다 :

"오라클 데이터베이스 JDBC 개발자 가이드 및 참조"에서

. 연결을 끊을 수 방화벽과 유휴 연결을위한

방화벽 제한 시간을 JDBC를 사용

. 이로 인해 JDBC 응용 프로그램이 연결을 기다리는 동안 정지 할 수 있습니다.

  • 것은 당신이 다음 항상 는 연결에 비활성 시간 초과 값을 설정, 연결 캐싱 또는 연결 풀링을 사용하는 경우 : 당신은 방화벽으로 인해 제한 시간에 절단되는 연결을 피하기 위해 다음 조치 중 하나 이상을 수행 할 수 있습니다 캐시는 방화벽 유휴 시간 초과 값보다 짧게 입니다.
  • 을 으로 설정하여 읽기 가능으로 설정하는 연결 속성 소켓에서 시간 초과. 제한 시간 값 은 밀리 초 단위입니다.
  • 는 JDBC OCI와 JDBC 얇은 드라이버 모두 들어, 연결 기술자의 설명 절에 = BROKEN 매개 변수를 ENABLE 를 데이터베이스에 연결 에 순 디스크립터를 사용하여 지정합니다. 또한 tcp_keepalive_interval에 대해 더 낮은 값 을 설정하십시오.
  • 서버 측의 sqlnet.ora 파일에 SQLNET.EXPIRE_TIME=1을 설정하여 Oracle Net DCD를 활성화하십시오.
+0

질문은 'DB가 다운되었을 때'입니다. 그게 당신의 전체 대답을 무의미하게 만듭니다. – EJP

+0

관련성이 있습니다. 처음 3 개의 글 머리 기호는 DB 측이 아닌 클라이언트 측에서하는 모든 작업입니다. 클라이언트 측에서 시간 초과를 빠르게하는 방법입니다. – mamboking