【问题标题】:What is the missing parameter in connection pooling?连接池中缺少什么参数?
【发布时间】:2009-09-11 12:29:00
【问题描述】:
  <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

            <property name="c3p0.max_size">100</property>
    <property name="c3p0.idleConnectionTestPeriod">300</property>
    <property name="c3p0.acquire_increment">1</property> 
    <property name="c3p0.idle_test_period">100</property> <!-- seconds --> 
    <property name="c3p0.max_statements">0</property> 
    <property name="c3p0.min_size">10</property> 
    <property name="c3p0.timeout">100</property> <!-- seconds --> 

这是 hibernate.cfg.xml 中的配置。我正在使用休眠 3.2.5 和 c3p0 0.9。我不知道我在这个配置中错过了什么。几次请求后,它显示连接达到最大池大小并等待空闲资源。如果我在本地机器上使用没有连接池配置,它不会显示任何错误消息。 请帮我找出缺失的部分。

【问题讨论】:

    标签: hibernate connection-pooling


    【解决方案1】:

    我使用以下配置,它在长期测试中没有问题: (我的数据源是spring配置的,不过还是可以看到c3p0的属性)

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
        <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
        <property name="jdbcUrl" value="${database.url}" />
        <property name="user" value="${database.login}" />
        <property name="password" value="${database.password}" />
        <property name="minPoolSize" value="3" />
        <property name="maxPoolSize" value="100" />
        <property name="maxStatements" value="1100" />
        <property name="maxStatementsPerConnection" value="120" />      
        <property name="checkoutTimeout" value="5000" />
        <property name="idleConnectionTestPeriod" value="60" />
    </bean>
    

    但是我猜你的问题不是配置。我假设并非所有连接都返回到池中,因此池在一段时间后会干涸。

    【讨论】:

    • 我认为您的连接池连接不足,因为它们也没有正确返回到池中。不增加maxPoolSize,先修复连接泄漏。
    • 感谢您的建议,问题出在连接上。
    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2017-07-26
    • 1970-01-01
    • 2014-04-29
    • 2011-10-12
    • 2014-09-22
    相关资源
    最近更新 更多