2017-02-23 163 views
1

Я немного смущен конфигурацией HikariCP в PlayFramework 2.5.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 

Значения для maximumPoolSize и connectionTimeout являются такими, как установлено в application.conf. Но значения для maxLifetime и idleTimeout игнорируются и устанавливаются в другие значения.

Является ли синтаксис 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

 Смежные вопросы

  • Нет связанных вопросов^_^