Java 如何消除c3p0死锁错误

Java 如何消除c3p0死锁错误,java,hibernate,c3p0,database-deadlocks,Java,Hibernate,C3p0,Database Deadlocks,我将hibernate 4.3.6与c3p0 0.9.2.1一起使用,并且经常出现以下错误: ThreadPoolAsynchronousRunner:778 - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@9abc33e -- Running DeadlockDetector[Exiting. No pending tasks.] 这降低了服务器的速度,我不知道是什么原因造成的,以及如何使用它 这是我的

我将hibernate 4.3.6与c3p0 0.9.2.1一起使用,并且经常出现以下错误:

ThreadPoolAsynchronousRunner:778 - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@9abc33e -- Running DeadlockDetector[Exiting. No pending tasks.]
这降低了服务器的速度,我不知道是什么原因造成的,以及如何使用它

这是我的hibernate.config文件:

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://ip:port/app?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8</property>
    <property name="hibernate.connection.username">username</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.connection.isolation">2</property>
    <property name="show_sql">true</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
     <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
     <property name="hibernate.c3p0.min_size">5</property>
      <property name="hibernate.c3p0.max_size">100</property>
      <property name="hibernate.c3p0.timeout">300</property>
      <property name="hibernate.c3p0.max_statements">50</property>
      <property name="hibernate.c3p0.idle_test_period">3000</property>
     <mapping class="server.c1"/>          
     <mapping class="server.c2"/>
     <mapping class="server.c3"/>
     <mapping class="server.c4"/>
     <mapping class="server.c5"/>
   </session-factory> 
</hibernate-configuration> 

关于它有很多问题,但我找不到具体的解决办法。

我对c3p0也有类似的问题。我的最终解决方案是使用此连接池

我在c3p0上遇到了类似的问题。我的最终解决方案是使用此连接池

如果您仍在使用c3p0,以下步骤可能会解决此问题:

  • 更新至最新的c3p0(现在为0.9.5.2)
  • 设置以下配置参数:

    c3p0.statementCacheNumDeferredCloseThreads=1

  • 更新:哦,等等。我反应太快了。对不起

    您实际上并没有看到死锁,您只是看到死锁检测器正在运行的消息。您看到的消息根本不是错误,只是记录在
    跟踪
    /
    调试
    /
    上的通知(取决于您使用的日志库)

    您应该配置日志记录,以便日志记录者在
    com.mchange
    log at
    INFO
    前面加上前缀。就这样。

    如果您仍在使用c3p0,以下步骤可能会解决此问题:

  • 更新至最新的c3p0(现在为0.9.5.2)
  • 设置以下配置参数:

    c3p0.statementCacheNumDeferredCloseThreads=1

  • 更新:哦,等等。我反应太快了。对不起

    您实际上并没有看到死锁,您只是看到死锁检测器正在运行的消息。您看到的消息根本不是错误,只是记录在
    跟踪
    /
    调试
    /
    上的通知(取决于您使用的日志库)


    您应该配置日志记录,以便日志记录者在
    com.mchange
    log at
    INFO
    前面加上前缀。就是这样。

    您是否尝试过更改c3p0文档中有关此问题的
    maxAdministrativeTaskTime
    numHelperThreads
    选项?可以找到应该设置哪些值的引用?从
    numHelperThreads=10开始。如果问题仍然存在,请添加
    maxAdministrativeTaskTime=3
    (增加到足以完成最长查询的值)。您是否尝试过更改c3p0文档中有关此问题的
    maxAdministrativeTaskTime
    numHelperThreads
    选项?可以找到应该设置哪些值的引用?从
    numHelperThreads=10开始。如果问题仍然存在,请添加
    maxAdministrativeTaskTime=3
    (增加到一个足够长的值,以完成最长的查询)。这并没有解决我的整个问题bug,它确实有帮助,谢谢。这并没有解决我的整个问题bug,它确实有帮助,谢谢。
    c3p0.testConnectionOnCheckout=true
    c3p0.privilegeSpawnedThreads=true
    c3p0.contextClassLoaderSource=library