[pgsql-jp: 34609] Re: pgpoolのnum_init_children とmax_pool

Tatsuo Ishii t-ishii @ sra.co.jp
2005年 1月 9日 (日) 08:54:58 JST


石井です.

> PHP&POSTGRESQLで構築しているサーバのアクセス数増加に備えて
> pgpoolの利用を考えているのですが、
> 素朴な疑問が浮かびました。
> 
> たとえば
>     num_init_children = 16
>     max_pool = 2
> となっているのと
>     num_init_children = 32
>     max_pool = 1
> となっているのとでは、
> DBへの最大接続数という意味ではかわらないと思うのですが、
> 実際どんな違いがあるのでしょうか?

max_poolを1より大きくするのは,PostgreSQLに接続するユーザの種類が1より
多いときに意味があります.たとえば,ユーザfooとbarで接続するのであれば,
max_poolを2にしておくと,pgpoolの子プロセスがfooとbarの接続をキャッシュ
してくれます.もしmax_poolを1にすると,最初fooで接続し,次にbarで接続
したときに,コネクションキャッシュを毎回捨てることになるので,実際には
コネクションプールとして働かなくなります(機能的にはまったく問題ありま
せんが,性能が低下します).

> pgpoolの子プロセス一個あたりが維持するDB接続数の目安があれば
> どなたかご教示いただければ幸いです。

PHPで利用するのであれば,おそらく接続ユーザは1種類の固定になると思うの
で,max_poolを1にしておけば充分でしょう.もちろんmax_poolを2以上にして
も構いません.この場合は,空いているコネクションキャッシュ領域が単に使
われないだけです(メモリは少し損しますが).
--
Tatsuo Ishii



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