how to check HikariCP connection pooling is working or not in Java?
First, configuration is no consistent since maximum < minimumIdle. Those should be set at most to the same value.
hibernate.hikari.maximumPoolSize=10hibernate.hikari.minimumIdle=10
If the pools is working you should see 10 ESTABLISHED connections to port 3306 (or mssql 1433 in the example below).
lsof -nP -i :1433 -sTCP:ESTABLISHEDCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEjava 1596 lmc 260u IPv6 1624799 0t0 TCP 127.0.0.1:43022->127.0.0.1:1433 (ESTABLISHED)java 1596 lmc 265u IPv6 1626072 0t0 TCP 127.0.0.1:43026->127.0.0.1:1433 (ESTABLISHED)java 1596 lmc 266u IPv6 1630933 0t0 TCP 127.0.0.1:43030->127.0.0.1:1433 (ESTABLISHED)java 1596 lmc 267u IPv6 1631705 0t0 TCP 127.0.0.1:43034->127.0.0.1:1433 (ESTABLISHED)java 1596 lmc 268u IPv6 1632268 0t0 TCP 127.0.0.1:43038->127.0.0.1:1433 (ESTABLISHED)java 1596 lmc 269u IPv6 1632273 0t0 TCP 127.0.0.1:43042->127.0.0.1:1433 (ESTABLISHED)java 1596 lmc 270u IPv6 1632278 0t0 TCP 127.0.0.1:43046->127.0.0.1:1433 (ESTABLISHED)
Using ss
(socket statistics)
ss -46 -np state established dport = :1433 | grep 'java' | sort -r -k 3,3 | nl 1 tcp 0 0 [::ffff:127.0.0.1]:43158 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=273)) 2 tcp 0 0 [::ffff:127.0.0.1]:43154 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=272)) 3 tcp 0 0 [::ffff:127.0.0.1]:43150 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=271)) 4 tcp 0 0 [::ffff:127.0.0.1]:43142 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=270)) 5 tcp 0 0 [::ffff:127.0.0.1]:43138 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=269)) 6 tcp 0 0 [::ffff:127.0.0.1]:43134 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=268)) 7 tcp 0 0 [::ffff:127.0.0.1]:43130 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=267)) 8 tcp 0 0 [::ffff:127.0.0.1]:43126 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=266)) 9 tcp 0 0 [::ffff:127.0.0.1]:43122 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=265)) 10 tcp 0 0 [::ffff:127.0.0.1]:43118 [::ffff:127.0.0.1]:1433 users:(("java",pid=1596,fd=260))
Using netstat
(deprecated on some distros in favor of ss
)
netstat -ant | grep 3306tcp 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
See HikariCP note about MySQL:
The MySQL DataSource is known to be broken with respect to network timeout support. Use jdbcUrl configuration instead.
You need to remove the below line and Hikari will find the driver
hibernate.datasource.driver-class-name=com.mysql.jdbc.Driver
jdbcUrl This property directs HikariCP to use "DriverManager-based" configuration. We feel that DataSource-based configuration (above) is superior
Also try adding the following as suggested when using Hibernate4:
hibernate.hikari.dataSource.url=jdbc:mysql://localhost/databasehibernate.hikari.dataSource.user=barthibernate.hikari.dataSource.password=51mp50n
Have you tried using the app to insert/update something in the database? If it fails then it's not working.
Another way to test it is change the datasource you provided here:
hibernate.hikari.dataSource.url
to a non-existing database.Finally, change the
<Configuration status="WARN">
to<Configuration status="DEBUG">