데이터베이스가 다운되었을 때 최대 절전 모드는 예외를 던지는 데 10 분이 걸립니다.

StackOverflow https://stackoverflow.com/questions/1614375

  •  06-07-2019
  •  | 
  •  

문제

나는 Spring + Hibernate 3 + C3P0을 실행하고 있습니다. 시작하면 데이터베이스가 다운되면 약 10 분 후에 예외가 발생합니다. 그때까지 프로그램이 차단됩니다 ... 스프링 XML, 최대 절전 모드 구성 등은 상당히 일반적인 문제이므로 솔루션이 존재하는 경우 표준 스트라워 워드 방식이어야합니다. 그렇지 않다면 중요한 코드와 구성을 다듬고 여기에 붙여 넣을 수 있습니다. 아무도 그것에 대해 아는 것이 있습니까? 미리 감사드립니다.


명확히하기 위해 :

본질적으로 필요한 것은 C3P0 또는 최대 절전 모드에 래퍼가 있는지, 심지어 Spring, DriverManager.setLogIntimeout () 함수 주변에 있는지 아는 것입니다. 또는이 기능을 제공하는 기능. 래퍼는 설정이나 무언가를 통과 할 수 있습니다. 원인 (소켓, 데이터베이스, 악천후)에 관계없이 x 초 안에 데이터 소스에 연결되지 않은 경우 예외를 원합니다. 그리고이 X를 설정할 장소를 찾고 싶습니다. 내가 사용하는 드라이버 인 Oracle Driver는 SetLogIntimeout ()를 구현하지 않으므로 직접 사용할 수 없습니다. 나는 그것을 해결할 방법이 없다는 것을 깨닫게되었지만 내 자신의 타이머 스레드를 수동으로 스폰합니다. 위의 상황을 확인할 수 있습니까? 정말 감사합니다.

도움이 되었습니까?

해결책

최대 절전 모드 / 스프링과 관련이 없을 가능성이 높습니다. 데이터베이스 연결 풀은 연결을 처리 할 책임이 있습니다.

  1. C3P0 설정은 무엇입니까?
  2. 어떤 데이터베이스 / 드라이버를 사용하고 있습니까? 오류를보고하기 전에 운전자 자체가 대기 / 재 시도하는 운전자 별 설정이 있습니까?
  3. "데이터베이스 다운"은 "완전히 다운"을 의미합니까? 아니면 어떤 종류의 소켓 타임 아웃으로 인해 발생할 수 있습니까?

업데이트 (아래의 OP 설명을 기반으로) :

DriverManager.setLoginTimeout() 오라클 드라이버에서 사용하지 않습니다. Oracledatasource에는 자체가 있습니다 logintimeout 설정 대신에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top