代码之家  ›  专栏  ›  技术社区  ›  Batakj

连接池中缺少的参数是什么?

  •  1
  • Batakj  · 技术社区  · 16 年前
      <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中的配置。我用的是Hibernate 3.2.5和c3p0.9。我不知道在这个配置中遗漏了什么。在很少的请求之后,它显示连接已达到最大池大小并正在等待可用资源。如果在本地计算机中使用不带连接池配置,则不会显示任何错误消息。 请帮我找出丢失的部分。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Wolfgang    16 年前

    i a使用以下配置,它在长期测试中没有问题: (我的数据源由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>
    

    不过,我想您的问题不是配置。我假设并不是所有的连接都返回到池中,因此池在一段时间后会变干。