연결의 유효성을 검사하지 못했습니다(이 연결이 닫혔습니다.).더 짧은 maxLifetime 값을 사용하는 것을 고려할 수 있습니다.
다음 오류 메시지가 나타납니다.
HikariPool-1 - 연결 org.postgresql.jdbc를 검증하지 못했습니다.PgConnection@f162126 (이 연결은 지금까지
비공개)더 짧은 것을 사용하는 것을 고려할 수 있습니다.maxLifetime
가치.
동일한 페이지를 자주 새로 고치면 다음과 같은 경고가 표시됩니다.
초과의maxLifetime
원래 데이터베이스 구성은 다음과 같습니다.
spring.datasource.hikari.auto-commit=false
spring.datasource.hikari.idleTimeout=180000
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.leakDetectionThreshold=240000
spring.datasource.hikari.maximumPoolSize=10
logging.level.com.zaxxer.hikari=TRACE
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.maxLifetime=300000
logging.level.com.zaxxer.hikari.HikariConfig=DEBUG
다음 속성을 변경하면 응용 프로그램이 정상적으로 작동합니다.
spring.datasource.hikari.maximumPoolSize=100
spring.datasource.hikari.maxLifetime=60000
정확히 무슨 일이 일어나고 있는지 설명할 수 있는 사람이 있습니까?
오류 메시지에서 알 수 있듯이 이 문제는 Hikari 연결 풀이 이미 닫힌 연결을 사용하려고 시도했기 때문에 발생합니다.
데이터베이스 연결은 TCP 연결일 뿐이며 너무 오랫동안 유휴 상태로 있으면 데이터베이스 또는 중간에 있는 방화벽에 의해 닫힐 수 있습니다.
히카리 CP는 연결 상태가 아직 살아 있고 사용할 수 있는지 확인하고 있습니다.새 연결을 열면 데이터베이스 액세스에 지연 시간이 추가되기 때문에 이미 닫힌 경우 경고 메시지가 표시됩니다.메소드에서 발생하는 오류를 볼 수 있습니다.isConnectionAlive
여기에
클라이언트 측
오류 메시지에서 알 수 있듯이, 당신은 그것을 줄일 수 있습니다.maxLifetime
이 문제를 해결하기 위한 구성입니다.
그maxLifetime
속성은 클라이언트에 의해 연결이 닫히기 전의 시간입니다.Hikari CP 설명서에서 제안하는 것처럼 데이터베이스/아키텍처 시간 제한보다 최소 몇 초 짧아야 합니다.
그 이유는 Hikari CP가 항상 데이터베이스보다 먼저 연결을 닫으면 이미 닫힌 연결을 사용하려고 하지 않기 때문입니다.
저는 당신의 데이터베이스나 아키텍처를 모르기 때문에 이것이 어떤 가치가 있어야 하는지 제안할 수 없습니다.정확하게 설정하려면 연결의 유휴 시간 제한을 확인해야 합니다.maxLifetime
배열.
이 숙박업소에 대한 설명서는 히카리 깃허브에서 읽을 수 있습니다.
데이터베이스 측면
TCP 시간 초과의 병목 현상이 방화벽 등이 아닌 데이터베이스인 경우 영향을 미칠 수 있는 Postgres에 대한 일부 연결 설정도 있습니다.
이에 대해 언급하고 싶었지만 일반적으로 합리적인 기본값이기 때문에 변경할 필요가 없습니다.
속성에 대한 설명서는 연결 설정 Postgres 설명서에서 찾을 수 있습니다.
찾고 있는 속성은 다음과 같습니다.
tcp_keepalive_cisco
OS가 킵얼라이브 메시지를 보내기 전에 TCP 연결이 유휴 상태여야 하는 시간입니다.
tcp_keepalive_cisco
OS가 승인되지 않은 킵얼라이브 메시지를 보낸 후 재시도하는 시간입니다.
tcp_keepalive_count
연결이 비활성 상태로 간주되기 전에 보낼 수 있는 승인되지 않은 킵얼라이브 메시지 수입니다.
언급URL : https://stackoverflow.com/questions/60301008/failed-to-validate-connection-this-connection-has-been-closed-possibly-consi
'programing' 카테고리의 다른 글
Excel이 프로그래밍 방식으로 인스턴스화될 때 추가 기능 로드 (0) | 2023.07.20 |
---|---|
플라스크-SQLAChemy 가져오기/컨텍스트 문제 (0) | 2023.07.20 |
UUID 기본 키가 BINARY(16)인 MariaDB 테이블이 NULL이 아님 (0) | 2023.07.20 |
가져오기 오류: 이름이 panda인 모듈이 없습니다. (0) | 2023.07.20 |
각 열 이름에 접미사(또는 접두사)를 추가하는 방법은 무엇입니까? (0) | 2023.07.20 |