[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 メーリングリストの案内