私はSpringプロジェクトで次のデータベース構成を持っています -
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.jdbc.url}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.password}" />
<property name="maxActive" value="75" />
<property name="initialSize" value="10" />
<property name="testOnBorrow" value="true" />
<property name="validationQuery" value="SELECT 1" />
<property name="maxWait" value="10000"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
autowire="byName">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
アプリケーションはしばらくの間 (30 分から 2 時間まで、場合によって異なります) 実行され、しばらくするとハングし始めます。つまり、ブラウザはサーバーの応答を待ち続けます。ログを確認すると、アプリケーションがデータベース クエリでハングしていることがわかりました -
01/22 16:56:03 3024208 [http-bio-8080-exec-2] DEBUG DEBUG org.springframework.jdbc.core.JdbcTemplate - Executing prepared SQL statement [SELECT * FROM mytable where id = ?]
データベースと対話し、コマンドラインまたは mysql ワークベンチからクエリを実行できるため、データベースへの接続は適切です。
問題の原因は何ですか? この時点で、例外がスローされず、スタックトレースがないため、どの方向を見ればよいか完全に途方に暮れています。この問題に取り組むためにどのようなアプローチを使用しますか?