Java 初始化C3P0连接池需要2分钟

Java 初始化C3P0连接池需要2分钟,java,hibernate,c3p0,Java,Hibernate,C3p0,我不明白为什么在我的Hibernate应用程序中初始化c3p0连接池需要2分钟 这在我的Hibernate.cfg.xml中: <hibernate-configuration> <session-factory> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="conne

我不明白为什么在我的Hibernate应用程序中初始化c3p0连接池需要2分钟

这在我的Hibernate.cfg.xml中:

<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url"/>
        <property name="connection.default_schema"/>
        <property name="connection.username"/>
        <property name="connection.password"/> 

        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
        <property name="current_session_context_class">thread</property>

        <property name="hibernate.c3p0.acquire_increment">1</property>
        <property name="hibernate.c3p0.min_size">3</property>
        <property name="hibernate.c3p0.max_size">10</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>
        <property name="hibernate.c3p0."></property>

        <property name="show_sql">true</property>
        <property name="format_sql">false</property>

        <property name="hbm2ddl.auto">create</property>
 </session-factory>
</hibernate-configuration>
这是我第一次使用Hibernate和c3p0,我希望它在启动池时会快得多?这是我的误解吗

使用远程数据库和本地PostgreSQL实例没有区别


(编辑:这不是真的。我在比较本地和远程数据库服务器时犯了一个错误。在本地,初始化几乎是立即进行的,远程初始化大约需要2分钟。)


Edit2:是连接过程的日志。

在会话工厂的配置中将Hibernate.temp.use\u jdbc\u metadata\u属性默认值设置为false。这将指示使用元数据方言而不是连接进行休眠,这会导致启动缓慢。您还必须为驱动程序配置适当的方言。

通常应为“immidatly”。也许可以尝试另一个池库来确保这是一个c3p0问题,比如BoneCP().hi。首先,您使用的是什么版本的c3p0?如果您使用的是c3p0-0.9.1.x,是否可以尝试升级到最新版本(c3p0-0.9.2-pre8)?重新设置:请选择大于1的acquireIncrement(根据池大小,默认值为3可能是可以的)。您可以尝试将AcquisiteTryDelay设置为一个较低的值——如果这加快了初始化速度,则意味着c3p0偶尔会遇到连接获取故障。(如果将记录器的级别设置为com.mchange.v2.resourcepool.BasicResourcePool为FINE或DEBUG,您将看到这些失败。)在比较本地和远程db服务器上的初始化时,我犯了一个错误。Sry,为了混乱。在本地,初始化几乎是立即进行的,远程初始化大约需要2分钟。我用一个Heroku Dev Postgres实例测试了它。这仍然是一个非典型的长时间吗?@SteveWaldman c3p0日志记录设置为调试,我找不到一种方法来对初始化和连接过程进行更精细的日志记录。您能否提供一个如何为com.mchange.v2.resourcepool.basicResourceSourcePool启用日志记录的提示?这取决于您的日志库--com.mchange.v2.resourcepool.basicResourceSourcePool是要为其启用更详细日志记录程序的日志记录程序。如果您使用的是Java标准日志库,那么应该有一个logging.properties文件。如果您使用的是log4j,则为log4j.properties。c3p0会在启动时转储它正在使用的日志框架,查找类似“MLog clients using”的行,然后查找标识日志库的字符串。请注意,登录到此处的其他人的原因与我相同:确保数据库正在运行,否则c3p0初始化将永远挂起;)@NicolaMarcacciRossi您所说的数据库正在运行是什么意思?你是说连接到数据库吗?
INFO: Initializing c3p0 pool... 
com.mchange.v2.c3p0.PoolBackedDataSource@30670080 [
  connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@ecfec4d0 [
    acquireIncrement -> 1,
    acquireRetryAttempts -> 30,
    acquireRetryDelay -> 1000,
    autoCommitOnClose -> false,
    automaticTestTable -> null,
    breakAfterAcquireFailure -> false,
    checkoutTimeout -> 0,
    connectionCustomizerClassName -> null,
    connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester,        
    debugUnreturnedConnectionStackTraces -> false,
    factoryClassLocation -> null,
    forceIgnoreUnresolvedTransactions -> false,
    identityToken -> I-REMOVED-THIS,
    idleConnectionTestPeriod -> 3000,
    initialPoolSize -> 3,
    maxAdministrativeTaskTime -> 0,
    maxConnectionAge -> 0,
    maxIdleTime -> 300,
    maxIdleTimeExcessConnections -> 0,
    maxPoolSize -> 10,
    maxStatements -> 50,
    maxStatementsPerConnection -> 0,
    minPoolSize -> 3,
    nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@b17e5c65 [
      description -> null,
      driverClass -> null,
      factoryClassLocation -> null,
      identityToken -> I-REMOVED-THIS,
      jdbcUrl -> jdbc:postgresql://URL-TO-MY_DB,
      properties -> {user=******, password=******, default_schema=}
    ],
    preferredTestQuery -> null,
    propertyCycle -> 0,
    testConnectionOnCheckin -> false,
    testConnectionOnCheckout -> false,
    unreturnedConnectionTimeout -> 0,
    usesTraditionalReflectiveProxies -> false;
    userOverrides: {}
  ],
  dataSourceName -> null,
  factoryClassLocation -> null,
  identityToken -> I-REMOVED-THIS,
  numHelperThreads -> 3
]