Мы запускаем приложение spring / hibernate / c3p0 под нагрузкой. Когда я уменьшаю значение c3p0 maxPoolSize до уровня, намного меньшего, чем число одновременно работающих пользователей, наше приложение просто зависает. В журнале нет сообщений об ошибках, но он также не переходит вперед.
Я ожидаю, что приложение замедлится, но не остановится совсем.
Вот наша конфигурация c3p0:
<bean id="coreDataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close"
p:driverClass="${core.jdbc.driver}"
p:jdbcUrl="${core.jdbc.url}"
p:user="${core.jdbc.user}"
p:acquireIncrement="5"
p:acquireRetryAttempts="10"
p:acquireRetryDelay="5000"
p:initialPoolSize="52"
p:maxIdleTime="3600"
p:maxIdleTimeExcessConnections="300"
p:minPoolSize="52"
p:maxPoolSize="125"
p:numHelperThreads="6"
p:unreturnedConnectionTimeout="0">
<property name="password">
<bean class="com.docfinity.util.encryption.SpringStringDecrypter"
p:decryptFlag="${core.jdbc.decryptPasswordFlag}"
p:encryptedString="${core.jdbc.password}" />
</property>
</bean>
Это заблокируется, если я добавлю 160 пользователей.
Я попытался установить unreturnedConnectionTimeout в положительное значение (120 секунд) и посмотрел на следы стека, которые отображаются в нашем приложении. Трассировки стека взяты из различных методов нашего приложения. Не похоже, что есть один метод, на который мы можем указать и сказать, что это утечка соединений.
Любая помощь в устранении этой проблемы была бы очень признательна.