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

zensyo @ ann.tama.kawasaki.jp zensyo @ ann.tama.kawasaki.jp
2003年 5月 23日 (金) 00:23:15 JST


鈴木@inetdです。

From: 末光美恵 <zenobia @ palmyra.ne.jp>
Subject: [pgsql-jp: 30018] コネクションプールが最大数を越えます
Date: Wed, 21 May 2003 12:25:14 +0900
Message-ID: <3ECAF19A.8020008 @ palmyra.ne.jp>

> 解決方法として試みたのは
> 1.アプリケーションプログラムで必ずコネクションを close する
>   当たり前ですが、これが信頼できないので、溜まったコネクションプールを
>   破棄するのが今回の命題です。

途中省略

> 無駄なコネクションプールを破棄する方法を教えて下さい。

うちでは仕方ないのでdelegateを途中に挟んでtimeout処理をさせるようにし
ています。

client --------(5432)-> delegate -------(5431)-> postmaster
  (内はポート番号)

delegateの起動はこんな感じです。
  delegated -P5432 SERVER=tcprelay://dbserver.example.com:5431 TIMEOUT=io:60

上記例では60秒間通信が行われていないとコネクションを切断します。
コネクションを切断したことはpostmasterのログには即座に出ます。psqlでは
タイムアウト後にコマンドを実行すると、切断された旨表示されます。
(psqlは一旦認証を済ますと、再接続時には自動的に認証してくれるんですね)

postmasterのポートをデフォルトから変更するとpg_ctlが結構あやしい動きに
なってしまうようです。pg_ctl start を実行するときに-Wオプションが必要
でした。

でわ。





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