負荷がかかった状態で 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 秒) に設定して、アプリケーションに表示されるスタック トレースを調べました。スタック トレースは、アプリケーションのさまざまなメソッドからのものです。接続が漏れていると指摘して言うことができる方法が1つあるわけではありません.
この問題をデバッグするための助けをいただければ幸いです。