2016-08-08 26 views
1

Webサービスでc3p0を使用しているWebプロジェクトで作業しています.hibernate.cfg.xmlファイルで次のパラメータを設定しました。ただし、max_sizeは10000ですアイドル状態のテスト期間は30日です。時にはmysqlサーバがdb.soへの別の接続を提供していないことがあります。私のサーバを再起動するまで、ウェブサイトに負荷がかかりロードされています。ログに "too many conection is opened"と表示されます。接続はc3p0で時々利用できません

<property name="hibernate.c3p0.min_size">10</property> 
     <property name="hibernate.c3p0.max_size">10000</property> 
     <property name="hibernate.c3p0.max_statements">5000</property> 
     <property name="hibernate.c3p0.maxIdleTime">1000</property> 
     <property name="hibernate.c3p0.maxIdleTimeExcessConnections">500</property> 
     <property name="hibernate.c3p0.acquire_increment">100</property> 
     <property name="hibernate.c3p0.idle_test_period">30</property> 
     <property name="hibernate.c3p0.validate">true</property> 
     <property name="hibernate.c3p0.preferredTestQuery">SELECT 1</property> 
     <property name="hibernate.c3p0.testConnectionOnCheckin">true</property> 
     <property name="hibernate.c3p0.testConnectionOnCheckout">false</property> 

答えて

0

あなたはおそらく接続リークを起こしている可能性があります。巨大なプールのサイズはそれを本当に助けません。 hereをご覧ください。

付録:堅牢なリソースのクリーンアップイディオム

することができますtry with resourcesを使用するとき、それは最高です。しかし、古いバージョンのJava(Java以前)や、AutoCloseableを実装していないリソースで作業している場合は、この種のものに戻す必要があります。接続が取得された場合、finally節は間違いなく実行され、各リソースのクローズ最高の試みが()があることを

Connection c  = null; 
OtherResource or = null; 

try 
{ 
    c = cpds.getConnection(); 
    or = getOtherResource() 

    // do stuff 
    // ... 
} 
finally 
{ 
    try { if (or != null) or.close(); } 
    catch (Exception e) { e.printStackTrace(); } 

    try { if (c != null) c.close(); } 
    catch (Exception e) { e.printStackTrace(); } 
} 

注:or は(クローズに失敗した場合)、その例外ではないだろう( )接続を終了しようとしないでください。

あなたは非常に注意する必要があります。ケインズが有名にしているように、カップと唇の間にはスリップ「twixt」がたくさんあります。

+0

ええ、私は理解していますが、私はダオ層のように開かれている各セッションを閉じています\t \t sessionobj.clear(); \t \t \t sessionobj.flush(); \t \t \t sessionobj.close(); – Vicky

+0

だと思います。 Java 7以上のリソースを使用していますか、それとも厄介な、昔ながらの堅牢なリソースクリーンアップイディオムですか?上記のリンクで説明されている試行パラメータを使用する場合、私はあなたがそうでないと思うだろうと思うhttp://stackoverflow.com/questions/11784674/spring-c3p0-postgres/11786683#11786683を参照してください。私は間違っている可能性がある!使用後にセッションを閉じるだけでは不十分です。例外が発生します。 –

+0

私のgoto robust-resource-cleanupリンクの有効期限が切れているようですが、私は説明を投稿して更新しました([ここ](https://sourceforge.net/p/c3p0/mailman/c3p0-users/?viewmonth = 200811))。 –

関連する問題