[pgpool-general-jp: 105] Re: pgbenchで接続数を増やすとデッドロックする

Tatsuo Ishii ishii @ sraoss.co.jp
2007年 4月 11日 (水) 13:13:46 JST


石井です.

> 初めまして、渡辺と申します。
> 
> 先日から pgpoolを使用した環境を構築し動作検証を実施しております。
> で、色々と調べてみたのですが、下記の様な現象が発生してしまい原因を
> 特定出来ていません。
> 
> 動作環境
> server1
> 	pgpool		port 5432
> 	postmaster	port 5433
> 
> pgpool.confはpgpool.conf.sampleをコピーし下記の設定のみ変更して起動
> port = 5432
> backend_port = 5433
> 
> この環境で下記の様に num_init_childrenより大きいコネクション数を指定する
> と...
> 
> $ pgbench -n -p 5432 -C -U postgres -c 33 -t 1000 bench
> 
> pgpoolのプロセスが、下記の様な状態になりデッドロックしてしまいます。
> 
> 31408 ?        S      0:00 pgpool: bench postgres [local] idle in 
> transaction
> 
> PostgreSQLのmax_connections は100になっています。
> 
> READMEを読むと
> >    なお,pgpool全体としては,num_init_children*max_pool 分だけ
> >    PostgreSQLへのコネクションが張られる点に注意してください.
> 
> と書かれているので、32x4コネクションは普通にさばけるのではと考えているの
> ですが正しいでしょうか?

正しいです.

> 何か回避策や設定ミス等あれば、お教え頂けるとありがたいです。
> よろしくお願い致します。

テスト方法に問題があります.

pgbenchは,最初に-c分だけコネクションを張ってからでないと処理が先に進
まないので,このような状態になります.

このようなテストであれば,README.euc_jpにあるような,apache+PHPのテス
トがお薦めです.
--
Tatsuo Ishii
SRA OSS, Inc. Japan


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