apache2.4+PHP5.4+postgreSQL9.2の環境で質問です。
PHPからpg_connectでpostgresに接続して、pg_queryで問い合わせ、pg_fetch_rowで返答を取得し、pg_closeで切断....というのがPHP<=>DBのやりとりですよね。
PHPからの接続数がちょうどpostgresql.conf内のmax_connectionsに達しているときに、同時で追加接続要求を出したとします。これはただちにpostgresが接続エラーを返して接続失敗となるのでしょうか?
それとも、接続要求はpostgresのキューのようなところに保持され接続できるまで待つことになるんですかね。
まずapacheにはhttpd.confのTimeoutがあり、PHPにはphp.iniにあるmax_execution_timeまでスクリプトは終わらないし、postgresql.confにもstatement_timeoutのようなパラメータがあり指定時間内までならDBもエラーを返さないようだから、その作りからすると、例えば、max_connections=100で接続が100人フルの時にちょうど101人目が接続しようとしたら問答無用で即時エラーになるとは思えないのです。
言い方を変えますと、300人ぐらいが絶えずpostgresに接続しているwebサイトがあって、設定がmax_connections=100だとしても、これらタイムアウトの時間内で接続〜問い合わせ〜返答までできればmax_connectionを300にする必要はないのではないかとも思いました。
どんな仕掛けになっているのでしょうか?
回答1件
あなたの回答
tips
プレビュー