Конфигурация Tomcat Connectionpool MySQL, чтобы избежать тайм-аут простоя соединений - PullRequest
1 голос
/ 05 августа 2011

Я использую tomcat 7 и пул соединений tomcat jdbc для раздачи соединений mysql.

В ночное время у нас нет активности, поэтому все соединения простаивают дольше 8 часов и сбрасываются mysql. (mysql's wait_timeout default).

Мы используем следующую конфигурацию пула:

<Resource name="jdbc/dbName"
        auth="Container"
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
        type="javax.sql.DataSource"
        maxActive="50"
        maxIdle="30"
        maxWait="5000"
        driverClassName="com.mysql.jdbc.Driver"
        validationQuery="SELECT 1"
        testOnBorrow="true"
        testWhileIdle="true"
        timeBetweenEvictionRunsMillis="10000"
        removeAbandoned="true"
        removeAbandonedTimeout="60"
        logAbandoned="true"
        username="xxx"
        password="xxx"
        url="jdbc:mysql://host:3306/xxx"/>

Я ожидал, что EvictionPolicy удалит незанятые соединения еще до того, как MySql их закроет. Каким-то образом через один день мы получаем следующее исключение:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: после закрытия соединения операции запрещены. Драйвер неявно закрыл соединение.

Полагаю, эта проблема должна решаться пулом соединений jdbc, но есть много свойств конфигурации, и я раньше не использовал этот пул. У кого-нибудь есть хороший набор свойств для настройки пула, чтобы он не выводил закрытые соединения?

С уважением,

Альберт

1 Ответ

0 голосов
/ 20 августа 2011

Решил это.Оказалось, что это не проблема объединения.Мы использовали скверил и лифт вместе, что не является удачной комбинацией (пока что).Соединения были закрыты, прежде чем вернуться в бассейн.Управление подключением DB к Ditching lift в пользу Squeryl's решило это.

...