2017-02-23 64 views
1

我对PlayFramework 2.5中HikariCP的配置有点困惑。PlayFramework 2.5:HikariCP忽略application.conf中的一些(但不是全部)设置

我补充说,我application.conf文件:

play.db { 
    # The combination of these two settings results in "db.default" as the 
    # default JDBC pool: 
    config = "db" 
    default = "default" 
    # Play uses HikariCP as the default connection pool. You can override 
    # settings by changing the prototype: 
    prototype { 
    hikaricp.maximumPoolSize = 30 
    hikaricp.connectionTimeout = 5 seconds 
    hikaticp.maxLifetime = 10 seconds 
    hikaticp.idleTimeout = 5 seconds 
    } 
} 

db.default.driver=org.postgresql.Driver 
db.default.url=${?JDBC_DATABASE_URL} 
db.default.username=${?DATABASE_USERNAME} 
db.default.password=${?DATABASE_PASSWORD} 

这工作正常。我获得了到数据库的连接并可以提交查询和全部。我的问题是,只使用HikariCP设置的一部分。在应用程序开始我赶上使用HikariCP参数:

[ 2017-02-23 11:12:58,413 ] [info] application - Creating Pool for datasource 'default' 
[ 2017-02-23 11:12:58,424 ] [debug] c.z.h.HikariConfig - HikariPool-1 - configuration: 
[ 2017-02-23 11:12:58,430 ] [debug] c.z.h.HikariConfig - allowPoolSuspension.............false 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - autoCommit......................true 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - catalog.........................null 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - connectionInitSql...............null 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - connectionTestQuery.............null 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - connectionTimeout...............5000 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSource......................null 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSourceClassName.............null 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSourceJNDI..................null 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - dataSourceProperties............{password=<masked>} 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - driverClassName................."org.postgresql.Driver" 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - healthCheckProperties...........{} 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - healthCheckRegistry.............null 
[ 2017-02-23 11:12:58,431 ] [debug] c.z.h.HikariConfig - idleTimeout.....................600000 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - initializationFailFast..........true 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - isolateInternalQueries..........false 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - jdbc4ConnectionTest.............false 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - jdbcUrl........................."XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - leakDetectionThreshold..........0 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - maxLifetime.....................1800000 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - maximumPoolSize.................30 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - metricRegistry..................null 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - metricsTrackerFactory...........null 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - minimumIdle.....................30 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - password........................<masked> 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - poolName........................"HikariPool-1" 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - readOnly........................false 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - registerMbeans..................false 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - scheduledExecutorService........null 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - threadFactory...................null 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - transactionIsolation............null 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - username........................"XXXXXXXXXXXXXXXX" 
[ 2017-02-23 11:12:58,432 ] [debug] c.z.h.HikariConfig - validationTimeout...............5000 

的值maximumPoolSizeconnectionTimeout如在application.conf设置。但maxLifetimeidleTimeout的值将被忽略并设置为其他值。

application.conf的语法在某些点是错误的,我看不到错误?

回答

1

他们非常小,尝试设置5分钟。

现在你必须在类似

maxLifetime is less than 30000ms, using default 1800000ms. 

HikariCP源代码中的日志消息看:

LOGGER.warn("{} - maxLifetime is less than 30000ms, setting to default {}ms.", poolName, MAX_LIFETIME); 
... 
LOGGER.warn("{} - idleTimeout is less than 10000ms, setting to default {}ms.", poolName, IDLE_TIMEOUT); 
+0

谢谢!对于这些变量来说,最小值也是我的想法,但我还没有找到提示。此外:应用程序的真正问题是连接处理不好,导致连接池在短时间后没有可用连接。解决这个问题后,我们不需要这么短的maxLifetime值。 – Thargor

相关问题