[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 メーリングリストの案内