
DataAccessResourceFailureException: Failed to obtain R2DBC Connection
R2DBC를 통해서 쿼리를 정상적으로 호출하다가, 위의 예외가 발생 io.r2dbc.r2dbc-pool를 통해서, 커넥션 풀을 설정할 수 있었음Dependency 추가implementation("io.r2dbc:r2dbc-pool:1.0.0.RELEASE")
@Bean 추가 @Bean
fun connectionFactory(): ConnectionFactory {
val connectionFactory = ConnectionFactories.get(
builder()
.option(DRIVER, "pool")
.option(PROTOCOL, "mysql")
.option(HOST, mysql.url)
.option(PORT, mysql.port.toInt())
.option(USER, mysql.username)
.option(PASSWORD, mysql.password)
.option(DATABASE, mysql.database)
.build()
)
val configuration: ConnectionPoolConfiguration =
ConnectionPoolConfiguration
.builder(connectionFactory)
.initialSize(2)
.maxSize(10)
.maxLifeTime(Duration.ofSeconds(600))
.maxIdleTime(Duration.ofSeconds(600))
.build()
return ConnectionPool(configuration)
}
maxSize는 일반적으로 사용하는 10개를 지정헀지만, 실제로는 응답속도, DB 시스템 관리자와 협의가 필요해보임maxLifeTime, 커넥션의 생명 주기를 600초로 지정하여 슬로우 쿼리 방지maxIdleTime, 커넥션 재사용에 가장 핵심인 부분, 600초동안 사용되지 않더라도 커넥션을 해제하지 않음
잘 봤습니다. 좋은 글 감사합니다.