Я использую следующую конфигурацию и без проблем работает в долгосрочных тестах:
(Мой источник данных настроен Spring, но вы все равно можете увидеть свойства для c3p0)
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="jdbcUrl" value="${database.url}" />
<property name="user" value="${database.login}" />
<property name="password" value="${database.password}" />
<property name="minPoolSize" value="3" />
<property name="maxPoolSize" value="100" />
<property name="maxStatements" value="1100" />
<property name="maxStatementsPerConnection" value="120" />
<property name="checkoutTimeout" value="5000" />
<property name="idleConnectionTestPeriod" value="60" />
</bean>
Однако я думаю, что ваша проблема не в конфигурации. Я предполагаю, что не все соединения возвращаются в пул, и поэтому пул через некоторое время работает всухую.