как проверить соединение HikariCP, работает или нет в Java?

Я написал следующие свойства в своих конфигурационных файлах. Я использую Log4j в своем приложении. Когда я запускаю проект.

Я получаю следующий message.does, что означает, что пул соединений настроен в моем проекте? если нет, то как это будет?

INFO: internal.ConnectionProviderInitiator - HHH000130: создание явного поставщика подключения: com.zaxxer.hikari.hibernate.HikariConnectionProvider

Я также ссылался на следующую ссылку

ссылка здесь

Настройки источника данных

hibernate.datasource.driver-class-name=com.mysql.jdbc.Driver
hibernate.datasource.url=jdbc:mysql://localhost:3306/mydb
hibernate.datasource.username=root
hibernate.datasource.password=root

Настройки HikariCP

hibernate.hikari.dataSource.url=jdbc:mysql://localhost:3306/mydb
hibernate.hikari.idleTimeout=10
hibernate.hikari.maximumPoolSize=30
hibernate.hikari.minimumIdle=15
hibernate.connection.provider_class=com.zaxxer.hikari.hibernate.HikariConnectionProvider
hibernate.hikari.dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource

Ответ 1

Во-первых, конфигурация не согласуется с максимальным значением <minimumIdle. Они должны быть установлены не более одного значения.

hibernate.hikari.maximumPoolSize=10
hibernate.hikari.minimumIdle=10

Если пулы работают, вы должны увидеть 10 ESTABLISHED соединений с портом 3306.

netstat -ant | grep 3306
tcp        0      0 127.0.0.1:41722     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41730     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41728     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41726     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41716     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41732     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41720     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41736     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41718     127.0.0.1:3306      ESTABLISHED 
tcp        0      0 127.0.0.1:41724     127.0.0.1:3306      ESTABLISHED

Ответ 2

См. Примечание HikariCP о MySQL:

Известно, что MySQL DataSource нарушен в отношении поддержки сетевого тайм-аута. Вместо этого используйте конфигурацию jdbcUrl.

Вам нужно удалить нижнюю строку, и Хикари найдет водителя

hibernate.datasource.driver-class-name=com.mysql.jdbc.Driver

jdbcUrl Это свойство направляет HikariCP на использование конфигурации на основе DriverManager. Мы считаем, что конфигурация на основе DataSource (выше) превосходит

Также попробуйте добавить следующее, как было предложено при использовании Hibernate4:

hibernate.hikari.dataSource.url=jdbc:mysql://localhost/database
hibernate.hikari.dataSource.user=bart
hibernate.hikari.dataSource.password=51mp50n

Ответ 3

  1. Вы пытались использовать приложение для вставки/обновления в базе данных? Если он терпит неудачу, то он не работает.

  2. Другой способ проверить это - изменить источник данных, который вы предоставили здесь: hibernate.hikari.dataSource.url в несуществующую базу данных.

  3. Наконец, измените <Configuration status="WARN"> на <Configuration status="DEBUG">

Ответ 4

На самом деле вы можете использовать jxm для проверки состояния соединений

Согласно документации

The JMX MBean for HikariCP exposes:

Idle Connection count ( you can check via your config and idle connection count)
Active Connections (in use)
Total Connections
The number of threads waiting for a connection
👉 In order to use JMX, you must set the pool property registerMbeans=true.

Программный доступ выглядит примерно так:

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (foo)");
HikariPoolMXBean poolProxy = JMX.newMXBeanProxy(mBeanServer, poolName, HikariPoolMXBean.class);

int idleConnections = poolProxy.getIdleConnections();

контрольная документация