2011-08-05 33 views
1

私はtomcat 7とtomcat jdbc接続プールを使用してmysql接続を整理しています。アイドル接続のタイムアウトを回避するTomcat connectionpool mysql設定

夜間には、すべての接続が8時間以上アイドル状態になり、mysqlによって削除されるようなアクティビティはありません。 (mysqlのwait_timeoutのデフォルト値)。私は、彼らがこれまでにMySQLが閉じます前に、アイドル状態の接続の仕方を削除するEvictionPolicyを期待していた

<Resource name="jdbc/dbName" 
     auth="Container" 
     factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
     type="javax.sql.DataSource" 
     maxActive="50" 
     maxIdle="30" 
     maxWait="5000" 
     driverClassName="com.mysql.jdbc.Driver" 
     validationQuery="SELECT 1" 
     testOnBorrow="true" 
     testWhileIdle="true" 
     timeBetweenEvictionRunsMillis="10000" 
     removeAbandoned="true" 
     removeAbandonedTimeout="60" 
     logAbandoned="true" 
     username="xxx" 
     password="xxx" 
     url="jdbc:mysql://host:3306/xxx"/> 

我々は、次のプール構成を使用しています。

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:接続closed.Connectionが暗黙的にドライバによって閉鎖された後に許可されません操作何とか一日の後に、私たちは次の例外を取得します。

この問題は、jdbc接続プールで解決できるものであるはずですが、多くの構成プロパティがあり、以前はこのプールを使用していませんでした。誰もプールを閉じた接続を排除しないように設定するプロパティの良いセットを持っていますか?

敬具、

アルバート

+0

プールから取得した 'try'ブロックの' finally'ブロック内の**接続ごとに**あなたのコードが 'connection.close()'を呼び出すことは確実ですか? – BalusC

+0

私は実際にリフトフレームワーク(スカラ)を使用しています。プールが行うべきこと(またはしない)を接続を開閉していませんか? – Albert

答えて

0

はそれを解決しました。結局のところ、プールの問題ではないことが判明しました。我々はsquerylを使用していて、幸せなcombiではない(ちょうどまだ)持ち上げています。接続がプールに戻される前に閉じられました。 リフトのDB接続管理を捨てて、スクエリルがそれを解決しました。

+0

あなたはあなたがしたことについてより具体的になることができますか?この[パターン](https://github.com/migo/test-squerylrecord/blob/master/src/main/scala/test/KickTheTires.scala)に従うことを意味し、新しいStandardDBVendorとDB.defineConnectionManagerを使用することを意味しますか?それらがBoneCPを使用するのを見ません。 – Kevin

関連する問題