[PHP-users 30567] Re: session_start()から先に進まない

donguri256 @ mac.com donguri256 @ mac.com
2006年 10月 20日 (金) 03:05:06 JST


質問者のどんぐりです。

> pg_pconnect()関数の中で止まっているみたいです。
> PostgreSQLへの接続待ちが「障害A」の正体かも知れませんね。

pconnectからconnectに変更しました。
すぐ結果を判断できる問題ではなかったので2日間放ってみましたが、いまのところ問題なく稼働し続けています!!
まさかDB周りが原因だとは思ってもみませんでした。
サイトだけでなく私自身も稼働し続けることができて、ほっとしています。(笑)

松本様ご指摘の「障害A」は、いまのところこれだと判断しています。
そして、上記の対策をしただけで「障害B」はまだ発生していません。いままでの様子から考えて今後も発生することはなさそうです。

ただ、深い意味での「原因」というと正直まだわかっていません。

> pg_pconnectは最大で[httpdのプロセス数×接続文字列の種類]
> のコネクションを作りますので、かえってレスポンスが低下する
> 場合があります。

とのことですが、現在は2〜3人がアクセスしているだけで(本件があり公開できませんでした)、それも常にではないですから、ご指摘のレスポンス低下がネックとは思えません。
pconnectは、使うのが妥当でない場面はあったとしても、使って技術的にまずい場面(例えば今回のように止まるなど)は本来ないのではと今は思っているので、これで何故問題になるのか、動いたからいいやではなくて調査を続行したいと思います。
ただ、標記の件については解決しましたのでこれで一旦閉じさせていただいて、今後なにか分かり次第追加ご報告させていただこうと思います。


今回の現象は、
session_start()の個所で、ある程度時間を空けて呼び出すときに動作が進まなくなるというもので、
具体的な対策としては、
・テスト(/開発)環境と本番環境で、ポートだけでなくドメイン自体を別のものにして、Cookieを確実に分ける
・(ADODB経由で使用していた)DBの接続をpconnectからconnectに変更する
という2点で対応できました。


堀田様、田中様、ヒントをいただきありがとうございました。
そして松本様には最初から最後まで手取り足取り本当に親身にご示唆いただきまして大変感謝しています。
本件が解消したこともそうですが、問題時に冷静に地道に原因調査する手法や姿勢を教えていただきました。

みなさま本当にありがとうございました。


---
どんぐり
donguri256 @ mac.com



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