как проверить соединение 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
-
Вы пытались использовать приложение для вставки/обновления в базе данных? Если он терпит неудачу, то он не работает.
-
Другой способ проверить это - изменить источник данных, который вы предоставили здесь: hibernate.hikari.dataSource.url
в несуществующую базу данных.
-
Наконец, измените <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();
контрольная документация