A versão Spring-Boot-2.0.0-M1 altera o pool padrão de conexão de banco de dados do pool jdbc tomcat para hikari, e ao executar o aplicativo spring boot, o console gera o seguinte
2021-11-25 14:48:09.429 INFO 22236 --- [ principal] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Iniciando... 2021-11-25 14:48:09.813 INFORMAÇÕES 22236 --- [ principal] com.zaxxer.hikari.HikariDataFonte : HikariPool-1 - Início concluído. Os valores padrão para a configuração padrão do Hikari são os seguintes:
{"connection-timeout":30000,"maximum-pool-size":10,"max-lifetime":180000,"minimum-idle":10,"validation-timeout":5000,"idle-timeout":60000}
| nome | Padrões do construtor | A configuração padrão é o valor após validação | validatereset | | MinOcioso | -1 | 10 | minIdle<0 ou minIdle>maxPoolSize, é resetado para maxPoolSize | | maxPoolSize | -1 | 10 | Se maxPoolSize for menor que 1, ele é resetado. Quando o minIdle<=0 é resetado para DEFAULT_POOL_SIZE, é 10; Se minIdle>0, ele reinicia para o valor de minIdle | | maxLifetime | MINUTES.toMillis(30) = 1800000 | 1800000 | Se não for igual a 0 e for menor que 30 segundos, será resetado para 30 minutos | | conexãoTempo Expirado | SECONDS.toMillis(30) = 30000 | 30000 | Se for menor que 250 ms, é resetado para 30 segundos | | validaçãoTimeout | SECONDS.toMillis(5) = 5000 | 5000 | Se estiver abaixo de 250 ms, ele é resetado para 5 segundos | | loginTimeout | 10 | 30 | Math.max(1, (int) MILISSEGUNDOS.paraSegundos(500L + conexãoTempoExpiração)), que é o máximo de conexãoTempo de espera+500ms para converter o número de segundos para o todo e 1 | | idleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | Se idleTimeout+1 segundo > maxLifetime e maxLifetime >0, será resetado para 0; Se idleTimeout!=0 e menos de 10 segundos, ele é resetado para 10 segundos | | LimiarDedeção de Vazamento | 0 | 0 | Se for maior que 0 e não for um teste unitário, julga-se ainda que (leakDetectionThreshold < SECONDS.toMillis(2) ou (leakDetectionThreshold > maxLifetime & maxLifetime > 0) será resetado para 0. Ou seja, se entrar em vigor, deve ser >0, não pode ser inferior a 2 segundos, e quando maxLifetime > 0 horas não pode ser maior que o máximo de Vida | | inicializaçãoFalhaTempo de Saída | 1 | 1 | - | | isAutoCommit | true | true | - | | isReadOnly | false | Fasle | - | | isAlallow PoolSuspension | false | false | - | | isIsolateInternalQueries | false | false | - | | isRegisterMbeans | false | false | - | | selado | false | true | Essa bandeira é verdadeira após o início da corrida, indicando que a modificação não está mais em execução | | Nome da piscina | zero | HikariPool-1 | - | | catálogo | zero | zero | - | | connectionInitSQL | zero | zero | - | | connectionTestQuery | zero | zero | - | | dataSourceClassName | zero | zero | - | | esquema | zero | zero | - | | transaçãoIsolamentoNome | zero | zero | - | | dataSource | zero | zero | - | | dataFontePropriedades | {} | {} | - | | threadFactory | zero | zero | - | | Executor Programado | zero | zero | - | | métricasTrackerFactory | zero | zero | - | | metricRegistry | zero | zero | - | | HealthCheckRegistry | zero | zero | - | | HealthCheckPropriedades | {} | {} | - |
Ao realizar um teste de estresse, a aplicação pode relatar os seguintes erros:
Causado por: org.springframework.jdbc.CannotGetJdbcConnectionException: Não conseguiu obter a conexão JDBC; exceção aninhada é java.sql.SQLTransientConnectionException: HikariPool-1 - Conexão não disponível, solicitação expirada após 30000ms. at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) em org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) em org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) em org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) em org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) em org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) em org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) em org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) em com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) em com.sun.proxy.$Proxy 224.query(Fonte Desconhecida) em org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) ... Mais 114 Causado por: java.sql.SQLTransientConnectionException: HikariPool-1 - Conexão não disponível, solicitação com tempo de expiração após 30000ms. em com.zaxxer.hikari.pool.HikariPool.createTimeOutException(HikariPool.java:695) em com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) em com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) em com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ... Mais 126
Erro:Não conseguiu obter a conexão JDBC; exceção aninhada é java.sql.SQLTransientConnectionException: HikariPool-1 - Conexão não disponível, solicitação expirada após 30000ms.
O Controlador gera o código da interface de configuração do HikariDataSource da seguinte forma:
Otimize o esquema, aumente o número máximo de threads e o número de conexões inativas, e modifique a configuração application.yml da seguinte forma:
(Fim)
|