[pgsql-jp: 30018] コネクションプールが最大数を越えます

末光美恵 zenobia @ palmyra.ne.jp
2003年 5月 21日 (水) 12:25:14 JST


末光と申します。

datasource を使って postgreSQL に接続するjava servlet アプリケーションプ
ログラムを作成しています。

WEBアプリケーションが接続のcloseに失敗した場合、利用不可能な接続がプール
の最大値に達するとデータベースに接続できなくなってしまいます。
この現象を解決できなくて困っています。


postgres: postgres dbname 127.0,0,1 idle (dbname はデータベース名)

というプロセスが30以上になった時に必ずデータベースにアクセスできなく
なってアプリケーションが異常終了します。

解決方法として試みたのは
1.アプリケーションプログラムで必ずコネクションを close する
  当たり前ですが、これが信頼できないので、溜まったコネクションプールを
  破棄するのが今回の命題です。
2.removeAbandoned を true にする
  利用不可能になった接続を再利用するとありますが、これを設定しても解決
  していません。server.xml の設定は以下のとおりです

             <parameter>
               <name>maxActive</name>
               <value>60</value>
             </parameter>
             <parameter>
               <name>maxIdle</name>
               <value>10</value>
             </parameter>
             <parameter>
               <name>maxWait</name>
               <value>100000</value>
             </parameter>
             <parameter>
               <name>removeAbandoned</name>
               <value>true</value>
             </parameter>
             <parameter>
               <name>removeAbandonedTimeout</name>
               <value>300</value>
             </parameter>
             <parameter>
               <name>logAbandoned</name>
               <value>true</value>
             </parameter>

3.maxActive や maxIdle の値をいろいろ変えて試してみましたが、効果なし
  不思議なのは maxActive の値を 100 とか 300 とかにしても
  postgres: postgres dbname 127.0,0,1 idle (dbname はデータベース名)
  のプロセスが30以上になるとアプリケーションが落ちます。
4.tomcat を再起動する
  現状は症状がある度に再起動で解決しています

無駄なコネクションプールを破棄する方法を教えて下さい。
環境は
	RedHat8.0
	J2SDK-1.4.1.01
	Tomcat-4.1.18
	postgreSQL-7.3.2
	Ant-1.5.1
です。










pgsql-jp メーリングリストの案内