1

ここスタックオーバーフローで何度も同様の質問に出くわしましたが、正しく理解できませんでした。

Tomcat 6 + MySQL (AWS RDS 上) でデータベース接続プールを使用しようとしています。これらは、構成したパラメーターです。

(Javaコードからの接続も閉じています)

<Resource name="jdbc/awsDB" auth="Container" type="javax.sql.DataSource"
                factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
                initialSize="10"
                testWhileIdle="true"
                maxActive="30"
                maxAge="3600"
            maxIdle="5"
                maxWait="3000"
                removeAbandoned="true"
                logAbandoned="false"
                validationQuery="SELECT 1"
                removeAbandonedTimeout="60"
                timeBetweenEvictionRunsMillis="15000"
                username="sbose78" password="XXXXX"
                driverClassName="com.mysql.jdbc.Driver"  
                url="jdbc:mysql://xxxxrds.amazonaws.com:3306/health?autoReconnect=true" />   

アプリケーションは、最初の数回のデータベース クエリでは問題なく動作し、その後、データベース接続が無期限にハングします。

接続ログから、接続プールが正常に機能していることに気付きましたが、SLEEP 状態の接続が 10 以上ある場合でも、新しいデータベース クエリの実行には無限の時間がかかります。

ほとんどの場合、サーバーを再起動することになります。

私はどのような設定ミスをしていますか?

よろしくお願いします!

4

1 に答える 1

0

クエリが where 句ですべてのインデックス付き列を使用しているかどうかを確認してください。接続プールについて確信がある場合は、おそらくクエリ自体に問題がある可能性があります。

于 2013-05-05T02:41:56.683 に答える