私はあなたが私を助けてくれることを願っています.本番環境でエラーが発生しています.MySqlコネクタバージョン5.1.2およびApacheコモンズ接続プールバージョン1.3でSpringメインアプリケーションJava 1.7を実行しています.
私の春のデータソース構成:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${db.driverClassName}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
<property name="maxActive" value="100" />
<property name="maxWait" value="1000" />
<property name="poolPreparedStatements" value="true" />
</bean>
数時間実行した後、例外 org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object が発生しました
最初は接続リークがあると思いました.netstatを実行してDB接続を確認した後、すべてが適切に管理されており、maxActive値よりもはるかに低いはずなので、接続の量が適切に維持されていることがわかりました...
もう1つの奇妙なことは、そのメインアプリケーションの3つのインスタンスが常に実行されており、ビジネスロジック構成が異なりますが、データソース構成はそれぞれ同じです。他の 2 つは、通常どおり DB から接続を取得しています。
MySql db からの接続をプールする Java インスタンスを除いて、DB と通信するサービスは他にもありますが、DB への合計接続数は MySql 構成よりもはるかに少なくなっています。
その例外に関する関連記事を読みましたが、主な問題は接続リークでしたが、私の場合、何も得られていないと確信しています。
ご協力いただきありがとうございます....