架构师_程序员_码农网

Имя пользователя Получить пароль
Регистрация

QQ登录

Всего один шаг, чтобы начать

Поиск
Просмотров:4942|Ответов: 1
打印 上一主题 下一主题

[Архив]Spring Boot Database Connection Pool HikariPool Optimisation

[Скопировать ссылку]
Поднимайте прямо к 跳转到指定楼层
владелец
发表于 2021-11-25 14:55:15|只看该作者回帖奖励|Реверсивныйпросмотр|Режим чтения
В версии Spring-Boot-2.0.0-M1 пул соединений базы данных по умолчанию изменен с tomcat jdbc pool на hikari, при запуске приложения spring boot в консоли появляется следующее сообщение:
2021-11-25 14:48:09.429 INFO 22236 --- [ main] com.zaxxer.hikari. HikariDataSource : HikariPool-1 - Starting...
2021-11-25 14:48:09.813 INFO 22236 --- [ main] com.zaxxer.hikari. HikariDataSource : HikariPool-1 - Запуск завершен.

Значения по умолчанию для стандартной конфигурации Hikari следующие:
{"connection-timeout":30000, "maximum-pool-size":10, "max-lifetime":1800000, "minimum-idle". 10, "validation-timeout":5000, "idle-timeout":600000}

имя Значения по умолчанию конструктора Значение по умолчанию после валидации. Сброс валидации
minIdle -1 10 minIdle<0 или minIdle>maxPoolSize сбрасывается на maxPoolSize.
maxPoolSize maxPoolSize -1 10 Если maxPoolSize меньше 1, он сбрасывается. При minIdle<=0 сбрасывается до DEFAULT_POOL_SIZE, равного 10; если minIdle>0 сбрасывается до значения minIdle
maxLifetime MINUTES.toMillis(30) = 1800000 1800000 Если значение не равно 0 и меньше 30 секунд, оно будет сброшено до 30 минут
connectionTimeout SECONDS.toMillis(30) = 30000 30000 Если меньше 250 миллисекунд, сбрасывается до 30 секунд
validationTimeout SECONDS.toMillis(5) = 5000 5000 Если меньше 250 миллисекунд, сбрасывается до 5 секунд
loginTimeout 10 30 Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), округляет до ближайшей секунды для connectionTimeout + 500 мс, и до 1 для 1
idleTimeout MINUTES.toMillis(10) = 600000 600000 Если idleTimeout+1sec > maxLifetime и maxLifetime > 0, то значение будет сброшено в 0. Если idleTimeout!=0 и меньше 10 с, то значение будет сброшено в 10 с.
Порог обнаружения утечки 0 0 Если больше 0 и не является модульным тестом, дальнейшее суждение: (leakDetectionThreshold < SECONDS.toMillis(2) или (leakDetectionThreshold > maxLifetime && maxLifetime &gt ; 0), оно будет сброшено в 0. Т.е. для вступления в силу оно должно быть > 0 и не может быть меньше 2 секунд, а также не может быть больше maxLifetime, если maxLifetime > 0.
initialisationFailTimeout 1 1 -isAutoCommit
isAutoCommit initialisationFailTimeout isAutoCommit -isReadOnly
isReadOnly true - isReadOnly fasle -isAllowPoolSuspension
isAllowPoolSuspension fasle - isAllowPoolSuspension false fasle - isAllowPoolSuspension false false
isIsolateInternalQueries false - isIsolateInternalQueries false -isRegisterMbeans
isRegisterMbeans false false -false
запечатанный false true Этот флаг равен true, когда запуск запущен и больше не будет выполняться никаких модификаций.
poolName null HikariPool-1 HikariPool-1
каталог null null HikariPool-1 - каталог null null
connectionInitSql null null -null
connectionTestQuery null null connectionTestQuery null null -
dataSourceClassName null null -null
схема null null -null
transactionIsolationName null null -transactionIsolationName null
transactionIsolationName null - dataSource null -dataSource null null
dataSourceProperties {} {} null - dataSourceProperties {} {}
threadFactory null null threadFactory null null -
scheduledExecutor null null -metricsTrackerFactory
metricsTrackerFactory null null null - metricsTrackerFactory
metricRegistry null null null - metricRegistry
реестр проверок здоровья null null -healthCheckRegistry null
healthCheckProperties {HealthCheckRegistry null null - healthCheckProperties} {} null - healthCheckProperties {} {}

Во время выполнения проверки приложение может выдать следующую ошибку:

Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql. SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java. 81)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
at com.sun.proxy.$Proxy224.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
... 114 подробнее
Вызвано: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
at 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)
... 126 подробнее


Ошибка: Не удалось получить JDBC Connection; вложенное исключение - java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms .Запрос завершился через 30000 мс.

Контроллер выводит код интерфейса конфигурации HikariDataSource следующим образом:

Чтобы оптимизировать решение, увеличить максимальное количество потоков и увеличить количество соединений, удерживаемых в режиме ожидания, измените конфигурацию application.yml следующим образом:

(Конец)




Предыдущая статья:Различия POI getLastRowNum() и getLastCellNum()
Следующая статья: [Доклад]Сравнение инструментов тестирования LoadRunner и Jmeter
Код Farmer, публикуется только в процессе практики, столкнулся с техническими трудностями, не вводите в заблуждение других.
диван
发表于 2022-12-14 21:46:53|只看该作者
Я не уверен, что смогу это сделать.
Код фермерской сети, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
Вы должны войти в систему, прежде чем сможете отправлять сообщения назад Войти | Зарегистрироваться

Эта версия интегральных правил


DISCLAIMER: Все программное обеспечение, материалы по программированию или статьи, опубликованные Code Farmer, предназначены только для использования в учебных и исследовательских целях; вышеуказанное содержимое не должно использоваться в коммерческих или незаконных целях, в противном случае все последствия будут возложены на самих пользователей. Это сайт информации из сети, спор об авторских правах не имеет никакого отношения к этому сайту. Вы должны полностью удалить вышеуказанное содержимое со своего компьютера в течение 24 часов после загрузки. Если вам понравилась программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшее подлинное обслуживание. Если есть какие-либо нарушения, пожалуйста, свяжитесь с нами по электронной почте, чтобы разобраться с этим.

Почта To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 03:36

Быстрый ответНазад к началуНазад к списку