[PHP-users 25013] Re: OCI8 関数使用時にHTTPDプロセスのファイルディスクプリタが開放されない

村上 義孝 y-murakm @ tkym.hek.co.jp
2005年 3月 22日 (火) 14:27:45 JST


返信が遅くなってしまい、申し訳ありません。

>こんにちわ、桝形です。

村上です。御返信いただき有難う御座います。

>> PHPからOCI8関数を使用してOracleにアクセスを行ったところ、httpdプロセスが
>> オープンしているファイルディスクプリタが開放されないという現象について質
>> 問させてください。
>
>過去ログに似たような報告があったような。。。
>(解決したのかは不明)
>http://ns1.php.gr.jp/pipermail/php-users/2004-October/023997.html

上記過去ログは投稿前に見つけていたのですが、解決してなく、
今回の事象とも若干条件が違う為、新たに投稿させていただきました。
この事をあらかじめ書いておくべきでした。申し訳ありません。

ご指摘いただいた方法、
 1.PHPのバージョンを最新(PHP 5.0.4RC1 or PHP 4.3.11RC1)とする
 2.ApacheのMaxRequestsPerChildを低くする
 3.ソースのocilogoffの条件付コンパイル部分(#if 0)を有効にする
のうち、2番目の方法について、試してみました。

MaxRequestsPerChildを小さくした場合も、ファイルディスクプリタが
溜まっていく動作は変わりません。
しかし、ファイルディスクリプタの数がMaxRequestsPerChildで
設定した値に達した際に、httpdプロセスが再起動され、それと同時に
ファイルディスクリプタも開放されているようです。
MaxRequestsPerChildを1にした場合、DB接続を2回以上行っている
ソースでは不具合が出るかとも思ったのですが、そのようなことも
無く、正常に処理が行えています。

よって、ファイルディスクプリタの増加に対しては
MaxRequestsPerChildの値を調整することにより対処しようと
思います(性能に影響を与えないよう、値については再度検討を
行います)。
1、3の方法は変更時の影響調査対象が多くなってしまう為、
今回の対処からは割愛しました。時間が取れ、調査が行えたら
フィードバックしたいと思います。

桝形さん、ご返信有難う御座いました。

------------------------------------------------------------
ハイエレコン 東京支社 第2システム部 第2システムG
Tel:03-3765-2721 FAX:03-3765-2750
村上 義孝(E-mail:y-murakm @ tkym.hek.co.jp)
------------------------------------------------------------


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