java - Hibernate + C3p0 + mysql

标签 java mysql hibernate c3p0

我设置了一个使用 hibernate 和 C3P0 进行连接池的应用程序。每当我尝试访问该应用程序时,都会收到 404 错误。在日志中,我看到 mysql 已阻止该应用程序用户。尽管做了刷新主机,我仍然遇到同样的异常。在mysql机器上执行netstat显示有很多入站连接试图连接处于等待状态。

     com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@64804446 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
     java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:10:46:910 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@6b7f48cf --                                                 Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:10:46:908 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@2bf45f28 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:10:46:919 CST] localhost-startStop-1   ERROR util.JDBCExceptionReporter:78 - Connections could not be acquired from the underlying database!
    [03-02-16 06:11:16:436 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@67c619c0 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    [03-02-16 06:11:16:438 CST] com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2    WARN resourcepool.BasicResourcePool:1841 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@740adfca -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
    java.sql.SQLException: null,  message from server: "Host '10.1.1.76' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
              at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
              at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1104)
              at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
              at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
              at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
              at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
              at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
              at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
              at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
              at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
              at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
              at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
              at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
              at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
              at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
              at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
              at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

然后我尝试刷新主机。用于登录数据库的凭据是正确的。但是,每当访问应用程序时,我仍然会看到相同的异常。

最佳答案

您可以通过在服务器启动时设置 max_connect_errors 来调整该值:

   mysqld_safe --max_connect_errors=10000 &

或者:

  SET GLOBAL max_connect_errors=10000;

关于java - Hibernate + C3p0 + mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194064/

相关文章:

java - @EnableJpaRepositories 未检测到或在 spring-boot 应用程序的任何地方都未检测到存储库的 @Autowired

java - 根据图像修改背景颜色(主题)

mysql - 在mysql中从扑克牌中找到两对

PHP MySQL 管理员级别

java - 对象引用未保存的 transient 实例 - 在刷新 : com. entity.Role 之前保存 transient 实例

EntityManager 中的 spring jpa NullPointerException

java - 当在某个线程上调用 Thread.interrupt() 时,会发生什么?

java - ANSI 到 UTF-8 通过 Java : some lines are lost

php - 单点登录最佳方法建议

java - hibernate 配置文件