[PHP-users 19193]OCILogon関数について

杉山和久 sugiyama @ nck-tky.co.jp
2003年 12月 3日 (水) 09:02:42 JST


日本コンピュータ開発の杉山と申します。

[質問概要]
OCILogon関数でDB接続して、切断関数を実行しない場合の
接続の状態がどうなるかわかりません。

[環境]
PHP4.3.0 + httpd-2.0.40-8 + oracle9.2.0.1.0

[負荷発生元]
LoadRunner

[構成]
ロードバランサ - WEBサーバ x 3 - DBサーバ x2 

[オラクル同時接続ユーザ数]
350ユーザ

[現象概要]
上記構成でロードランナー(以下LN)を使用して負荷テストを実施しております。
LN上で仮想的にユーザを350人生成してWEBサーバへ負荷をかけます。
この際、350人が同時にWEBサーバ、DBサーバへアクセスを行います。

(1)正常にアクセス可能なユーザの応答時間
5〜7秒

(2)アクセス応答が遅いユーザ
8分間

(3)DBへの接続状況
 1.一台のWEBサーバからDBサーバへ接続を試みている数
  30〜50ユーザ
 2.DBサーバ上で接続を受け付けている数
  5〜15ユーザ

(4)オラクルの負荷状態
1.CPU使用率
  5〜10%

オラクル側での設定では同時接続ユーザ数は350ユーザであるため、
接続を待たされるということは考えにくいです。またオラクルサーバ
の負荷も5〜10%程度と非常に低負荷なので処理能力不足も考えに
くいです。

ただ、プログラムの中で以下の部分を発見しました。

====================
test_func(){
// Oracle接続
$conn = OCILogon(ORA_USER, ORA_PASS, ORA_SID);
$sql = "insert into test (".
...........
..........
}
====================
DBに接続してはいますが、切断する関数が抜けてしまっています。

リソース開放関数(OCIFreeStatement)
オラクル切断関数(OCILogoff)
を記述しなかった場合、DBへの接続は自動的に切断されるのか、それ
ともずっと接続したままなのでしょうか?
PHPのマニュアルを見てもOCILogon を実行したら必ず切断しなければ
ならいとの記述はありませんでした。

[質問詳細]
1.切断関数が抜けた場合の接続の状態
2.PHP側でDBへ接続を開始できる数に上限が設定されているか

ご存知の方がいらっしゃれば、ご回答・調査方法等ご教示くださいますよう
宜しくお願いいたします.

 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 杉山 和久
 sugiyama @ nck-tky.co.jp
 Nippon Computer Kaihastu,Ltd.
 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/




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