HikariCP在addConnection()上冻结

时间:2014-03-15 08:28:23

标签: mysql hikaricp

我正在使用Hikari连接池,我注意到HikariCP冻结了。我接受了线程转储并意识到它在addConnection()方法上冻结。

这是我的HikariPool被侵略的线程的堆栈跟踪

"main" prio=10 tid=0x00007fc07c00c800 nid=0x3105 runnable [0x00007fc08275f000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:152)
        at java.net.SocketInputStream.read(SocketInputStream.java:122)
        at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)
        at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161)
        at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)
        - locked <0x00000007d9f32408> (a com.mysql.jdbc.util.ReadAheadInputStream)
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2549)
        at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:620)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1102)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
        - locked <0x00000007d9f275b8> (a com.mysql.jdbc.JDBC4Connection)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at sun.reflect.GeneratedConstructorAccessor39.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
        at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:440)
        at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:138)
        at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:108)
        at com.zaxxer.hikari.HikariPool.addConnection(HikariPool.java:382)
        at com.zaxxer.hikari.HikariPool.fillPool(HikariPool.java:315)
        at com.zaxxer.hikari.HikariPool.<init>(HikariPool.java:135)
        at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:51)

查看堆栈跟踪,我确实看到线程在socketRead上等待。但我能够在相同的两台机器之间使用mysql命令行进行连接。有什么想法吗?

0 个答案:

没有答案