[PHP-users 32296] 持続的接続の挙動について質問があります。

福永 周司 fuku_315 @ yahoo.co.jp
2007年 6月 8日 (金) 15:04:29 JST


福永と申します。

Apache+PHP+PostgreSQLという環境で、負荷ツールを使ってApache
に負荷をかけました。
するとDBへのリンク数が増えていき、PostgreSQL側で同時接続
数超過のエラーログが出力されるのですが、その後、同時接続
数を超えない程度のリクエス
トを発行しても同時接続数超過のエラーログが出力され、DBへ
の接続ができない状態になりました。

PHPからDBへの接続はpg_pconnect()を使用しているのですが、
pg_pconnect()で接続し、同時接続数超過となった後で、
何か処理をしているため別のリクエストが来ても空きのリンク
と
判断していないように見受けられます。

試しにpg_connect()で接続するようにすると、同じように負荷
をかけてもDBへの接続ができない状態にはなりませんでした。

持続的接続は、PHPの処理が終ればすぐに使い回し出来ると
思っていたのですが、PHPの処理が終わってもすぐに使い回し
出来きないものなのでしょうか?

もしかしたら、同時接続数超過が原因で、処理が終わっていな
い
と判断されて、リンクを占有したままになっているのかもしれ
ません。
処理が終わっていないと判断された場合、そのリンクは永遠に
残ってしまい、使い回しできないようになってしまうものなの
で
しょうか?

ご存知の方がいましたら教えていただけないでしょうか?

なお、動作環境は以下の通りです。
WebサーバマシンとDBサーバマシンの2台構成
■Webサーバ(Windows Server 2003 Standard)
 Apache 2.0.58
 PHP5.1.6
■DBサーバ(Windows Server 2003 Standard)
 PostgreSQL 8.1.5

よろしくお願いします。


--------------------------------------
Start Yahoo! Auction now! Check out the cool campaign
http://pr.mail.yahoo.co.jp/auction/


PHP-users メーリングリストの案内