Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A conexão com o Db morre após>4<24 na hibernação jpa de inicialização por mola


A maneira mais fácil é especificar o autoReconnect no URL JDBC, embora essa não seja a abordagem recomendada.
spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true

Isso pode causar problemas quando você tem uma conexão ativa e durante uma transação algo acontece e uma reconexão acontecerá. Não dará problemas quando a conexão for validada no início da transação e uma nova conexão for adquirida no início.

No entanto, provavelmente é melhor habilitar a validação de suas conexões durante a vida útil do seu aplicativo. Para isso, você pode especificar várias propriedades .

Primeiro, comece especificando o número máximo de conexões permitidas para o pool. (Para uma leitura sobre como determinar o tamanho máximo do pool, leia este ).
spring.datasource.max-active=10

Você também pode querer especificar o número de conexões iniciais
spring.datasource.initial-size=5

Em seguida, você deseja especificar o número mínimo e máximo de conexões inativas.
spring.datasource.max-idle=5
spring.datasource.min-idle=1

Para validar a conexão, você precisa especificar uma consulta de validação e quando validar. Como você deseja validar periodicamente, em vez de quando uma conexão é recuperada do pool (isso para evitar conexões quebradas em seu pool).
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1

OBSERVAÇÃO: O uso de uma validation-query é realmente desencorajado, pois o JDBC4 tem uma maneira melhor/diferente de fazer a validação da conexão. O HikariCP chamará automaticamente o método de validação JDBC quando disponível.

Agora que você também está validando enquanto uma conexão está inativa, você precisa especificar com que frequência deseja executar essa consulta para as conexões e quando uma conexão é considerada inativa.
spring.datasource.time-between-eviction-runs-millis=5000 (this is the default)
spring.datasource.min-evictable-idle-time-millis=60000 (this is also default)

Tudo isso deve acionar a validação de suas conexões (ociosas) e quando ocorrer uma exceção ou o período ocioso tiver passado, suas conexões serão removidas do pool.

Supondo que você esteja usando o Tomcat JDBC como o pool de conexões isto é uma boa leitura do que e como configurar.

ATUALIZAÇÃO: O Spring Boot 2.x mudou o pool de conexão padrão para HikariCP em vez de Tomcat JDBC.