投稿日:2003年07月04日 作成鷹の巣

No.10944 AN HTTPDのメモリ使用量が20000KBを越えてよく落ちる。



AN HTTPDのメモリ使用量が20000KBを越えてよく落ちる。

No.10944 投稿時間:2003年07月04日(Fri) 00:16 投稿者名:er URL:

PC変えました。(メモリ256MBです。)
Perl使用、IIS不使用、一日10000接続要求くらいです。

数時間(全くランダム)動かしているとプログラムの強制終了が出ます。
どうすればいいんだろ~助けてください。

メモリ64Mのマシンとは違いCPUが100%になりつづける事は無いんですが、
httpd.exeのメモリ使用量が20000KBを余裕で越えているんです。
ちょっと心配です。


もう少し、詳しく環境を書いて下さい。

No.10951 投稿時間:2003年07月04日(Fri) 10:26 投稿者名:鷹の巣@松阪 URL:http://sakaguch.com/

> PC変えました。(メモリ256MBです。)
> Perl使用、IIS不使用、一日10000接続要求くらいです。

接続要求というのは、hit数(件数)、ページビュー数(ページ)、IPアドレス数(訪問数)のどれでしようか?
http://sakaguch.com/log/2003/200305.html#DAYOFMONTH


> 数時間(全くランダム)動かしているとプログラムの強制終了が出ます。
> どうすればいいんだろ~助けてください。
> 
> メモリ64Mのマシンとは違いCPUが100%になりつづける事は無いんですが、
> httpd.exeのメモリ使用量が20000KBを余裕で越えているんです。

原因は、わかりませんが、ログファイルは、ログのタブで、ログの更新を「毎日」に設定してみて下さい。
それから、もう少し、詳しく環境を書いて下さい。

私の環境
ハードウェア:CPU:Celeron1GHz(2002年1月まで300A)メモリー256MB HDD:60GB1台。
       ルーターは、Lynksys製のBEFSR41。サーバー機は、クライアント機3台と同一のセグメントのプライベートアドレス。
OS     :Windows 2000 Professional build 2195 SP3
Webサーバー :AN HTTPD 1.42h 設定例は、http://sakaguch.com/SetAnhttpdSec.htmlhttp://sakaguch.com/SetVirtualHost.html
プロバイダ :フレッツADSL、wakwakざんまいADSL。非固定IPアドレス1個。

私は、現在、出張中で最近Windows updateを行っていない危険な状態です。
OSの再起動(AN HTTPDの再起動も含む)が全く出来ずに60日以上、経過してしまいました。
http://uptime.netcraft.com/up/graph?site=sakaguch.com

私の場合、不具合は、CGIで500番(Internal Server Error:予期しないサーバーエラーのため、要求を実行できなかった。)が
出張中に一度だけ発生しました。UNIX的な表現をしますと、perl.exeのゾンビプロセスが2個発生していました。
# 電話で、女房をリモートコントロールして、タスクマネージャから、ゾンビプロセスをkillしてもらいました。

原因は、perl.exeを使用したCGIから、ArGoSoft Mail ServerのFreeware versionを利用する際にゾンビプロセスが
発生しているように考えられます。(AN HTTPD 1.42hは、無関係だと考えています。)

ゾンビプロセスかどうかは、わかりませんが、これをCGIで発生させない努力も必要です。
どんなWebサーバーでも、CGIがWebサーバーに対して、無応答になりますと、ゾンビプロセスが発生します。
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=%E3%82%BE%E3%83%B3%E3%83%93%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9


横道にそれますが

No.10962 投稿時間:2003年07月04日(Fri) 18:00 投稿者名:OAK URL:

横道にそれた話で申し訳無いですが
ゾンビプロセスとは、プログラムが終了しているのにその親がそれを無視している状態の
プロセスで、外部から殺す事が出来ない物です。
ジョブ自体は終了しているので当然メモリーやタイムスライスを消費しません
親がwaitpidを行なわない限り存在します。
今回のような物は無限ループ(タイムスライス消費する場合)やIO待ち状態などと言います。

話はかわりますが、そのWEBは重いCGIがありますか
ただ単にhtmlだけならヒット数は多くてもあまり問題は発生しないのですが。
同時アクセス数制限はかけていますか。
winサーバーはベースが重いしサーバーソフトはwindowsが不得意のマルチタスク
パイプ、テンポラリーファイルなどを使う事が多く負荷の大きな物には不向きです。


では今回の件とは関係が無いのですね。

No.10964 投稿時間:2003年07月04日(Fri) 18:12 投稿者名:er URL:

>今回のような物は無限ループ(タイムスライス消費する場合)やIO待ち状態などと言います。
では今回の件とは関係が無いのですね。

>話はかわりますが、そのWEBは重いCGIがありますか

CGIはメインのアップローダー、掲示板、アクセス解析、ファイル表示ツールくらいです。

>同時アクセス数制限はかけていますか。
いいえ、かけてません。


ゾンビプロセスの認識は、間違っていますか?

No.10973 投稿時間:2003年07月05日(Sat) 09:17 投稿者名:鷹の巣@松阪 URL:http://sakaguch.com/

> ゾンビプロセスとは、プログラムが終了しているのにその親がそれを無視している状態の
> プロセスで、外部から殺す事が出来ない物です。

Linuxでは、プロセスIDを指定して、ゾンビプロセスをkill出来ませんか?
# 強制的にプロセスを終了させるという意味です。

> ジョブ自体は終了しているので当然メモリーやタイムスライスを消費しません
> 親がwaitpidを行なわない限り存在します。
> 今回のような物は無限ループ(タイムスライス消費する場合)やIO待ち状態などと言います。

私のゾンビプロセスの認識は、教科書的に理解していますが、間違っていますか?
http://www.bi.a.u-tokyo.ac.jp/~wataruk/os-ensyu/2002/ex3.html

Windowsのperl.exeから実行されるperlのCGIのプロセスは、
WebサーバーのAN HTTPD(httpd.exe)→shell(NT系では、CMD.exe。95系では、COMMAND.com)→perl.exe sample.cgi
です。

親プロセスのhttpd.exeのプロセスIDと子プロセスのperl.exeのプロセスIDは、異なっていたと思います。
# 出先で、うる覚えで、タスクマネージャで確認した訳ではありません。

perl.exeが2つ残っていたのは、CPUに負荷をかけていませんので、
主記憶上に常駐する休眠状態のプロセスで、httpd.exeの使用メモリが増大するという現象とは、異なります。


ゾンビプロセス

No.10991 投稿時間:2003年07月06日(Sun) 13:14 投稿者名:OAK URL:

フォークという考えがあまりないWindowsで鷹の巣さんの解釈が正しいのかどうなのかははっきりしません
Windowsではゾンビは出来ないのかもしれません。ちょっとわからない。
実際のゾンビは紹介されたページのサンプルにありますが、ここで
$ cat pp
#!/usr/bin/perl
@jb=('ls','-l');
if(!fork()){ exec(@jb);}
sleep 1000;
のプログラムppを実行しますと
# ./pp &
(lsがうごき表示)
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
100 S 520 26582 26581 0 70 0 - 564 wait4 pts/1 00:00:00 bash
000 S 520 26607 26582 0 69 0 - 607 nanosl pts/1 00:00:00 pp
004 Z 520 26608 26607 0 69 0 - 0 do_exi pts/1 00:00:00 ls <defun
000 R 520 26609 26582 0 74 0 - 719 - pts/1 00:00:00 ps
ゾンビが26608 でできました。
$ cat /proc/26608/stat
26608 (ls) Z 26607 26607 26581 34817 26611 4 45 0 176 0......
ステータス Z でゾンビです。
$ kill 26608
としても
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
100 S 520 26582 26581 0 73 0 - 564 wait4 pts/1 00:00:00 bash
000 S 520 26607 26582 0 69 0 - 607 nanosl pts/1 00:00:00 pp
004 Z 520 26608 26607 0 69 0 - 0 do_exi pts/1 00:00:00 ls <defun
000 R 520 26612 26582 0 74 0 - 719 - pts/1 00:00:00 ps
でゾンビは殺しても死なないからゾンビです。
親プロセス26607をkillすればゾンビはいなくなります。


すみませんでした。少し詳しく書きます。

No.10963 投稿時間:2003年07月04日(Fri) 18:00 投稿者名:er URL:

> 接続要求というのは、hit数(件数)、ページビュー数(ページ)、IPアドレス数(訪問数)のどれでしようか?
ファイル表示数…ページビューに近いかな。

>ログファイルは、ログのタブで、ログの更新を「毎日」に設定してみて下さい。
了解しました。

環境
CPU:AMB Athlon XPプロセッサ メモリ256MB 約30GBHDD
WindowsXPのPPPoEで接続。FTTH。
OS :Microsoft Windows XP Home Edition Version 2002 Service Pack 1
Webサーバー :AN HTTPD 1.42h
プロバイダ :@nifty。非固定IPアドレス。


補足

No.10966 投稿時間:2003年07月04日(Fri) 18:31 投稿者名:er URL:

・メモリ使用量は突然越えるのではなく、じわりじわりと上がってきます。
増加は無限です。ついに32000KBを突破しました。
http://up.atnifty.com/upload/img/200307041830_taskmgr.jpg

なにかゴミがたまってきている可能性も有ります。

・CPU使用率は常時20%以下で安定しています。
たまにFTPサーバソフトで100%になりますが問題ありません。

早い解決を望んでいるので、みなさんにアドレス教えます。
http://up.atnifty.com/
http://up.atnifty.com/upload/ です。

http://up.atnifty.com/upload/の方はトップページがCGIファイルです。


「AN HTTP Server へのゲストブック/コメント集」で、ご質問される方が確実だと考えます。

No.10974 投稿時間:2003年07月05日(Sat) 10:02 投稿者名:鷹の巣@松阪 URL:http://sakaguch.com/

> ・メモリ使用量は突然越えるのではなく、じわりじわりと上がってきます。
> 増加は無限です。ついに32000KBを突破しました。
> http://up.atnifty.com/upload/img/200307041830_taskmgr.jpg

サーバー機としては、デーモンプロセスの数が多いような気がしました。

> なにかゴミがたまってきている可能性も有ります。

私もAvailable Memoryの量のトレンドグラフは、メモリリークをチェックする関係上、
たまに観察していますが、5~10Mbyteまで、減ってくると急に100Mbyteまで回復します。
OSのメモリ管理の問題かもしれませんが、やはりAN HTTPDの強制終了直前のログから、
原因を調べることになると考えます。

AN HTTP Server へのゲストブック/コメント集
http://www.st.rim.or.jp/~nakata/gbook/gbook.htm
で、ご質問される方が確実だと考えます。

> ・CPU使用率は常時20%以下で安定しています。
> たまにFTPサーバソフトで100%になりますが問題ありません。
>
> 早い解決を望んでいるので、みなさんにアドレス教えます。
> http://up.atnifty.com/
> http://up.atnifty.com/upload/ です。
>
> http://up.atnifty.com/upload/の方はトップページがCGIファイルです。

画像ファイルのサイズが5Mbytesあったり、1分毎にuploadされたりで、
downloadを無視してもデータの転送量が物凄いですね。
私のサイトのデータの転送量とは比べ物にならないので、私のサイトの状況は、参考にならないですね。

# 試していませんが、test.cgiをuploadしますと、test.cgiが実行されることはないですよね。


uploadフォルダ内で、CGIが動作。

No.10976 投稿時間:2003年07月05日(Sat) 11:13 投稿者名:er URL:

> 画像ファイルのサイズが5Mbytesあったり、1分毎にuploadされたりで、
> downloadを無視してもデータの転送量が物凄いですね。
> 私のサイトのデータの転送量とは比べ物にならないので、私のサイトの状況は、参考にならないですね。
そんなに多くないですよ。大きいファイルの転送は少ないです。

> # 試していませんが、test.cgiをuploadしますと、test.cgiが実行されることはないですよね。
ためしにやってみたら、見事なまでに実行されました。(笑)
http://up.atnifty.com/upload/img/だけCGIを動かせないようにするにはどうすればいいのですか?


ファイルをアップロードするフォルダを変えるほかありません。

No.10983 投稿時間:2003年07月05日(Sat) 16:31 投稿者名:eternally URL:

ファイルをアップロードするフォルダを変えるほかありません。


HTTPDの設定でCGIを実行できるディレクトリを細かく設定する。

No.10994 投稿時間:2003年07月06日(Sun) 15:34 投稿者名:APACHE URL:http://kemuri-net.dip.jp/~server/

> > # 試していませんが、test.cgiをuploadしますと、test.cgiが実行されることはないですよね。
> ためしにやってみたら、見事なまでに実行されました。(笑)
> http://up.atnifty.com/upload/img/だけCGIを動かせないようにするにはどうすればいいのですか?
Anhttpdはもう2年程弄ってないので設定できたか分かりませんが、
HTTPDの設定でCGIを実行できるディレクトリを細かく設定する。
#Apacheとかは".htaccess"ファイルにOptions -ExecCGI -Includesと記述して
#実行させたくないディレクトリへ放り込むだけなんですけどね...

設定できない場合は
Upload時に拡張子を書き換えてしまえばいいと思います。

crack.cgi =>UPLOAD=>crack.txt

と言う感じに...


AN HTTPDで、実行パスを指定する方法。

No.11005 投稿時間:2003年07月07日(Mon) 00:00 投稿者名:鷹の巣@松阪 URL:http://sakaguch.com/

> > # 試していませんが、test.cgiをuploadしますと、test.cgiが実行されることはないですよね。
> ためしにやってみたら、見事なまでに実行されました。(笑)
> http://up.atnifty.com/upload/img/だけCGIを動かせないようにするにはどうすればいいのですか?

http://sakaguch.com/SetAnhttpdSec.html#General
の項3の7に示しています様に「一般」タブで
  拡張子   実行プログラム  般 #! PT EX
レ .pl,.cgi  perl      レ
の一般パスでの実行を削除して、
レ .pl,.cgi  perl
とします。これで、実行パスを指定しないとCGIが実行出来なくなりますので、
拡張子(ファイル名の最後のドットから後の部分)がplやcgiであっても、
ソースが表示されたり、ダウンロードになったりします。

実行パス指定は、項4に示しています様に「エイリアス」タブで、
実行パス
仮想パス  ローカルパス
/cgi-bin  D:\www\cgi
と設定し、D:\www\cgi\aska.cgiを設置すれば、http://up.atnifty.com/cgi-bin/aska.cgi
で、掲示板のCGIが動作します。

http://up.atnifty.com/upload/aska.cgiでは、CGIのソースが表示されたり、ダウンロードになりますので、
ソースに書いてあるパスワードが流出しない様、くれぐれも手順を間違わないようにして下さい。


了解しました。

No.10977 投稿時間:2003年07月05日(Sat) 11:16 投稿者名:er URL:

> 「AN HTTP Server へのゲストブック/コメント集」で、ご質問される方が確実だと考えます。
了解しました。

> サーバー機としては、デーモンプロセスの数が多いような気がしました。
ですよね…なんかWindows立ち上げと同時に自動的に起動されるみたいです。


解決しました。

No.11081 投稿時間:2003年07月10日(Thu) 23:06 投稿者名:er(NameServer1) URL:


不要なアプリケーションをアンインストールしたり、スタートアップをためたりしていたら、
極端に上がることはなくなりました。


|目次|掲示板|過去ログ目次|▲頁先頭|