[pgsql-jp: 33705] Re: pgpool の接続が増え続けます

Tatsuo Ishii t-ishii @ sra.co.jp
2004年 7月 20日 (火) 12:38:21 JST


石井です.

> 芋野です。
> 早速以下部分を修正した 2.0.5 で試してみました。
> 
> [PostgreSQL、pgpool 共に同一PC]
> 
> 例1) CSE、及び、libpq.dll を使った自作アプリのみで行った場合
>     起動後終了すると postgre の接続は開放される。繰り返してもOK。
>     次々同じDB、ユーザーでつないでゆくとnum_init_children に達した
>     後は反応が返ってこない。他の接続を一つでも開放すると接続さ
>     れる。これは違うDBを交えても同じ。
> 
> 例2) ODBC接続を用いた自作アプリのみで行った場合
>     起動後終了しても postgre の接続は維持されたまま。
>     その後同じDB,ユーザーで起動しても接続は増えない。(再利用?)
>     次々同じDB、ユーザーでつないでゆくとnum_init_children に達した
>     後は反応が返ってこない。他の接続を一つでも開放すると接続さ
>     れる。これは違うDBを交えても同じ。
> 
> [PostgreSQL が別PC]
>     上記の場合と同じでした。
> 
> これらの結果を踏まえて以下の諸点につき質問させてください。
> 
> 1.例1)の場合アプリを終了するとその都度接続は開放されますが
>     これはいわゆる「コネクションプール」機能が働いていないという
>     ことなんでしょうか。

はい,そうなります.その理由ですが,先のメールにも書きましたが,これは
お使いのlibpq.dllにバグがあるからです.このバグが直っているもっと新し
いlibpq.dllを使えばコネクションプール機能が動作するようになるはずです.

> 2.どちらの例もそうなのですが、num_init_children に達するとそれ以上
>     接続されず、待たされているようなのですがこれは本来の動きなの
>     でしょうか。

はい,仕様通りです.pgpoolはコネクション数を魔法のように増やすツールで
はありません.比較的短いセッションが多数存在するときに,それらをキュー
イングするすることによって,見掛け上多数の接続が使えるように見せかける
ものです.pgpoolに限らず,JDBCのコネクションプールでも同じような動作に
なっているはずです.
--
Tatsuo Ishii



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