Erro de operação de configuração de fonte de dados múltiplos Spring Boot: Nenhuma operação permitida após conexão fechada solução de exceção de conexão

No artigo anterior, falamos sobre como configurar múltiplas fontes de dados, mas após a configuração ser utilizada por um período de tempo, ocorrerá um erro ao consultar o banco de dados: Nenhuma operação permitida após o fechamento da conexão.

1. Causa do problema:
Após investigação, descobriu-se que é porque o MySQL 5.0 fez um processamento para conexões de banco de dados de longo prazo, ou seja, se uma conexão de banco de dados passar 8 horas sem nenhuma operação (o padrão "wait_timeout" de o servidor Mysql "é de 8 horas), o Mysql fechará automaticamente a conexão. Este é o problema. Se as conexões no pool de conexões ficarem inativas por mais de 8 horas, o mysql irá desconectá-las e o próprio pool de conexões não saberá que a conexão expirou. Se um cliente solicitar uma conexão neste momento, o O pool de conexões irá expirar. A conexão fornecida ao Cliente causará a exceção acima.
Portanto, ao configurar a fonte de dados, você precisa configurar os parâmetros do pool de conexões correspondentes para verificar a validade da conexão e limpar conexões inválidas regularmente.
2. Modificação do arquivo de configuração

#指定连接池最大的空闲连接数量.
spring.datasource.max-idle=10 
#指定连接池等待连接返回的最大等待时间,毫秒单位.
spring.datasource.max-wait=10000 
#指定必须保持连接的最小值(For DBCP and Tomcat connection pools)
spring.datasource.min-idle=5
#指定启动连接池时,初始建立的连接数量
spring.datasource.initial-size=5
#指定获取连接时连接校验的sql查询语句.
spring.datasource.validation-query=SELECT 1
#获取连接时候验证,会影响性能
spring.datasource.test-on-borrow=false
#当连接空闲时,是否执行连接测试.
spring.datasource.test-while-idle=true
#指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔
spring.datasource.time-between-eviction-runs-millis=18800 


Após adicionar a configuração acima, o problema de fechamento do tempo limite de conexão do banco de dados não ocorrerá mais.

Supongo que te gusta

Origin blog.csdn.net/stalin_/article/details/132626479
Recomendado
Clasificación