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