Время ожидания соединения после периода бездействия

У нас есть API, который использует Hibernate в качестве инструмента ORM, и мы используем c3p0 в качестве обработчика пула соединений. У нас нет проблем, когда мы находимся под нагрузкой. Однако у нас не получается установить соединение. исключения, когда API был неактивным в течение дня или около того. Таким образом, если никто не использует API в выходные дни, мы получим ошибки подключения в понедельник утром.

Caused by: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.

Мы используем MySQL в качестве базы данных. В результате моих исследований я узнал, что MySQL делает соединения устаревшими через 8 часов или около того. Вполне возможно, что пул соединений выдает устаревшее соединение с клиентом и, следовательно, исключения тайм-аута соединения для клиента.

В настоящее время у нас нет никакого тестирования соединения, настроенного в C3Po. Допустим, если я использую IdleTestPeriod для проверки соединения, прежде чем они будут переданы клиенту пулом. Что произойдет, если все мои соединения не пройдут тест в определенный момент времени? Будут ли эти неудачные соединения удалены из пула, и новые активные соединения будут сгенерированы снова?

В настоящее время это настройки c3p0, которые мы используем. Возможны ли другие причины этой проблемы?

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="${----}"/>
        <property name="jdbcUrl" value="${----}"/>
        <property name="user" value="${----}"/>
        <property name="password" value="${------}"/>
        <property name="minPoolSize" value="5"/>
        <property name="acquireIncrement" value="5" />
        <property name="maxPoolSize" value="125" />
        <property name="maxStatements" value="10" />
        <property name="maxIdleTime" value="180" />
        <property name="maxIdleTimeExcessConnections" value="30" />
        <property name="checkoutTimeout" value="3000" />
        <property name="preferredTestQuery" value="SELECT 1" />
    </bean>

Спасибо за помощь

Ответы на вопрос(2)

Ваш ответ на вопрос