Payara / Glassfish Postgresql источник данных пул соединений JDBC - PullRequest
2 голосов
/ 23 апреля 2019

Я настраиваю пул соединений JDBC для Java EE, Payara - приложения PostgreSQL.

Сейчас я наблюдаю некоторые неожиданные медленные запросы SQL, которые происходят случайно.Иногда ответ SQL для простого выбора с помощью PK может занять более 30 секунд.

Я использую источник данных org.postgresql.ds.PGSimpleDataSource, который не выполняет пул соединений.Это причина, почему я иногда подозреваю медленный SQL.

Я видел, что org.postgresql.ds.common.BaseDataSource имеет реализации PGConnectionPoolDataSource, PGPoolingDataSource, PGSimpleDataSource, PGXADataSource.

Мои вопросы: какой будет наилучший подход для выбора и настройки наилучшей реализации источника данных пула соединений?

Может быть, есть какой-то другой общий пул соединений JDBC?

Iпробовал PGConnectionPoolDataSource, который, кажется, имеет лучшую производительность.

Сконфигурированный META-INF / glassfish-resources.xml выглядит следующим образом:

<resources>
    <jdbc-connection-pool datasource-classname="org.postgresql.ds.PGSimpleDataSource"
                          name="PostgresPool"
                          res-type="javax.sql.DataSource"
                          max-pool-size="100"
                          steady-pool-size="10"
                          is-connection-validation-required="true"
                          connection-validation-method="table"
                          validation-table-name="locale"
                          validate-atmost-once-period-in-seconds="60">

        <property name="ServerName" value="localhost"></property>
        <property name="PortNumber" value="5432"></property>
        <property name="DatabaseName" value="my_db"></property>
        <property name="User" value="db_user"></property>
        <property name="Password" value="super_secret"></property>
        <property name="TcpKeepAlive" value="true"></property>
        <property name="Ssl" value="false"></property>
        <property name="Sslfactory" value="org.postgresql.ssl.NonValidatingFactory"></property>
    </jdbc-connection-pool>
...