programing

ELB를 통한 mariadb galera 클러스터를 사용하는 grails 애플리케이션에서 Mysql 연결 시간 초과

copysource 2022. 10. 21. 22:09
반응형

ELB를 통한 mariadb galera 클러스터를 사용하는 grails 애플리케이션에서 Mysql 연결 시간 초과

최근에 mysql에서 mariadb로 2노드 클러스터 데이터베이스 복제를 지원하기 위해 데이터베이스를 마이그레이션했습니다.데이터베이스가 다른 도메인에 호스트되어 ELB를 통해 액세스 됩니다.어플리케이션의 어느 쪽인가의 노드를 가리키면, 애플리케이션은 정상적으로 동작합니다만, ELB URL 를 사용해 데이타베이스에 접속하면, 랜덤으로 변동해, followint 에러가 자주 발생합니다.

Communication Link Failure
could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query

데이터 소스 구성은 다음과 같습니다.

dataSource {
shard = false
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
dbCreate = "update" // one of 'create', 'create-drop','update'

properties {
    initialSize=5
    maxActive=50
    minIdle=5
    maxIdle=25
    maxWait = 10000
    maxAge = 10 * 60000
    timeBetweenEvictionRunsMillis=5000
    minEvictableIdleTimeMillis=60000
    validationQuery="SELECT 1"
    validationInterval=15000
    testWhileIdle=true
    testOnBorrow=true
    testOnReturn=false
    jdbcInterceptors = "ConnectionState"
    defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED
}

무엇이 문제인지 파악하여 가능한 해결책을 제시해 주실 수 있습니까?

문제를 파악했는데, ELB에 idle Time이라는 필드가 있었습니다.60초로 설정된 출력과 1분 이상 걸린 쿼리가 예기치 않게 드롭되어 타임아웃을 600초로 늘린 후 문제가 재현되지 않습니다.:)

언급URL : https://stackoverflow.com/questions/32476574/mysql-connection-time-out-in-grails-application-using-mariadb-galera-cluster-ov

반응형