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

Tatsuo Ishii t-ishii @ sra.co.jp
2004年 7月 14日 (水) 16:26:21 JST


石井です.

> pgpool を利用させていただくべく、テストを行ってみたのですが
> 少し思っていた動きではありませんでしたので少し長くなりますが
> ご質問申し上げます。
>
> 現在実際に PostgreSQL(7.4.2)が稼動している Linux(RH7.2) 上に
> pgpool をインストールしました。(PostgreSQL 単独での稼動は問題
> ありません)
> 
> pgpool.conf で修正したのは以下の3行のみです。
> port = 5432
> allow_inet_domain_socket = 1
> backend_port = 5433
> 
> また、postgresql.conf では以下の1行のみ変更しました。
> port = 5433
> 
> これで
> /etc/init.d/postgres restart
> を行い、次に
> /usr/local/bin/pgpool
> を行いました。
> 
> そこで同PCにて
> su - postgres
> の後、
> psql dbname
> を行い(以下、dbname はデータベース名、dbuser はユーザー名と
> します)即、\q にて終了して
> ps ax
> を行ったところ、
> 
> 10115 pts/1    S      0:00 postgres: postgres dbname [local] idle
> 
> の行が存在し、もう一度
> psql dbname
> \q
> 後、確認すると確かに元の行がそのまま存在していました。
> 
> そこで今度は同一ネットワーク上に在る Windows XP からつみきソフト
> ウェアさんの「CSE」を起動し、同 データベースに接続を行いました。
> ps ax で確認しますといつものように
> 
> 10118 pts/1    S      0:00 postgres: dbuser dbname [local] idle
> 10119 pts/1    S      0:00 postgres: dbuser dbname [local] idle
> 
> の2行が存在し、「CSE」を切断しても消えませんでした。通常は
> 切断と同時に上記2行は消えてしまいますのでこれが pgpool の機能
> であろうと思い、もう一度「CES」で接続いたしましたが今度は新たに
> 
> 10124 pts/1    S      0:00 postgres: dbuser dbname [local] idle
> 10125 pts/1    S      0:00 postgres: dbuser dbname [local] idle
> 
> の二行が加わっており前の2行もそのまま存在していました。そして
> この接続、切断を繰り返すごとに2行づつ増えて行きました。私の理解
> ではこの場合最初の2接続が使いまわされて、接続数は増えないと考え
> ていたのですが(現に psql で行ったテストではそうなっておりました)
> 何か間違った理解をしておりますでしょうか。あるいは用い方になにか
> 問題があるのでしょうか。ご指摘いただければありがたいのですが。
> なおこれ以外になにか情報が必要であればご指示ください。
> 以上、勝手ながらよろしくご指導ください。

デフォルトではpgpoolは32本の子プロセスを作り,それぞれがPostgreSQLクラ
イアントからの接続を待ち受けています.どのプロセスに接続されるかはOSに
よって決まり,pgpoolではきめられません.たまたますでにPostgreSQLに接続
済のpgpoolプロセスに要求が到達すれば上記postgresプロセス(=PostgreSQLへ
の接続)は増えませんが,そうではなくてたまたままだPostgreSQLに接続して
いないpgpoolプロセスが要求を受け取った場合は新たにpostgresプロセスが生
まれるので上記のような現象になります.

もう一つの可能性としては,CSEの接続がきちんと切断されていないのではな
いか,ということです.もしもCSEからPostgreSQLに直接接続/切断を繰り返し
てpostgresプロセスが残るようであれば,CSEの問題ということになりますね.
--
Tatsuo Ishii



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