[PHP-users 18482]OCI関数でオラクルにアクセスしたら、オラクルプロセスが残ったままです・・・
?? ??
yoshisak30 @ msn.com
2003年 10月 16日 (木) 20:58:32 JST
さかもと@TSTです。
初めて投稿いたします。
今回、Webアプリを社内で使うことになり、
作成していましたが ある日、サーバのメモリがいっぱいになって
WebからオラクルDBのアクセスができなくなりました。
環境は、
Solaris2.X
PHP 4.3.2
DB Oracle
ざっと、こんな環境ですがプロセスをコマンドで表示したところ、
以下のようになりました。
オラクルのプロセスのみ、抽出しました。このプロセスのサイズは異様に
でかいです!メモリオーバーでたまに vi が動かないこともあります。
--------------------------------------------------------
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME
CMD
8 S 100 17575 1 0 50 20 ? 50985 ? ? 0:01
oracle
8 S 100 17573 1 0 50 20 ? 51108 ? ? 1:16
oracle
8 S 100 17565 1 0 50 20 ? 51214 ? ? 3:59
oracle
8 S 100 17569 1 0 50 20 ? 51226 ? ? 2:37
oracle
8 S 100 17577 1 0 50 20 ? 50966 ? ? 0:08
oracle
8 S 100 27876 1 0 41 20 ? 51001 ? ? 0:00
oracle
8 S 100 17567 1 0 50 20 ? 51398 ? ? 2:36
oracle
8 S 100 17571 1 0 50 20 ? 51229 ? ? 39:35
oracle
8 S 100 17579 1 0 50 20 ? 51138 ? ? 0:04
oracle
8 S 100 26114 1 0 41 20 ? 51261 ? ? 0:06
oracle
8 S 100 26084 1 0 41 20 ? 51263 ? ? 0:06
oracle
8 S 100 26119 1 0 41 20 ? 51265 ? ? 0:06
oracle
8 S 100 26116 1 0 41 20 ? 51005 ? ? 0:06
oracle
8 S 100 26082 1 0 41 20 ? 51261 ? ? 0:06
oracle
8 S 100 26089 1 0 41 20 ? 51265 ? ? 0:06
oracle
8 S 100 26093 1 0 41 20 ? 51263 ? ? 0:07
oracle
-------------------------------------------------------
ちなみネットワークの状況は(ポート1521関係を抜粋)
--------------------------------------------------------
Local Address Remote Address State
-------------------- -------------------- -------
solarisX.54605 solarisX.1521 32768 0 32768 0
CLOSE_WAIT
*.1521 *.* 0 0 24576 0
LISTEN
solarisX.63846 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.63846 32768 0 32768 0
ESTABLISHED
solarisX.33032 solarisX.1521 32768 0 32768 0
CLOSE_WAIT
solarisX.33034 solarisX.1521 32768 0 32768 0
CLOSE_WAIT
solarisX.33055 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33055 32768 0 32768 0
ESTABLISHED
solarisX.33056 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33056 32768 0 32768 0
ESTABLISHED
solarisX.33057 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33057 32768 0 32768 0
ESTABLISHED
solarisX.33059 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33059 32768 0 32768 0
ESTABLISHED
solarisX.33060 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33060 32768 0 32768 0
ESTABLISHED
solarisX.33061 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33061 32768 0 32768 0
ESTABLISHED
solarisX.33062 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33062 32768 0 32768 0
ESTABLISHED
solarisX.33080 solarisX.1521 32768 0 32768 0
ESTABLISHED
solarisX.1521 solarisX.33080 32768 0 32768 0
ESTABLISHED
------------------------------------------------------------------
だいたい、1対の通信(ソースポート・リモートポート)が約15組存在していま
す。
OCIPLogon()関数でオラクルDBを処理していますが(便利な関数だと聞いており
ま
す。
httpdのプロセスに対応して接続、切断をしているとのことですが・・・)、
それを採用しても、なぜかオラクルの接続プロセスが残っています。接続が確立
した
状態です。(ESTABLISHED)
いろいろ原因を考えましたが、わかりません。
どのように対処すれば、余分なプロセスを消してメモリを最小限にしておくこと
がで
きるでしょうか?
宜しくお願いします。
ちなみに、このプロセスを殺して、DBに再接続したところ以下のエラーが出まし
た。
---------------------------------------------------------------------
OCIStmtExecute: ORA-03113: 通信チャネルでファイルが終りになりました。
in
/usr1/www-data/daicho/logincheck.php on line 25
---------------------------------------------------------------------
プロセスを直接殺す方法がだめだったので、もしおわかりの方がいらっしゃいま
した
ら、教授宜しくお願いします。
_________________________________________________________________
あなたのPCを守るために定期的なセキュリティ対策を。マイクロソフト セキュリ
ティ情報センター http://www.microsoft.com/japan/protect/hm.asp
PHP-users メーリングリストの案内