[Armadillo:00742] Re: Armadillo-Jのメモリ管理について
Fumito Morishima
email@hidden
2005年 12月 16日 (金) 17:19:22 JST
森島です。
同じ環境で動作させてみました。
結果から言うと、cgiを連続で稼働させた場合、
メモリが消費されていきました。
ただ、ls や mallocを行うプログラム、また通常のhtmlファイルの
ブラウズではメモリが消費されなかったので、
どこか環境に異なる部分があるのかもしれません。
以上の状況から推測すると、thttpd の cgiを動作させる部分に
何か問題があるように思われるので、ちょっと調べてみます。
メモリ消費を調べた方法を記載しておきます。
[cgi(html)の調査]
1. Armadillo-Jにhelloと表示するだけのcgiを容易
2. PCに、以下のスクリプトを用意してAJのcgiを連続起動
#!/bin/sh
while [ 1 ]
do
wget http://ipaddress_of_AJ/cgi-bin/cgi_or_html_file -O > /dev/null
wget http://ipaddress_of_AJ/cgi-bin/cgi_or_html_file -O > /dev/null
wget http://ipaddress_of_AJ/cgi-bin/cgi_or_html_file -O > /dev/null
sleep 1
done
3. Armadillo-J上で、以下のスクリプトを実行してメモリ使用量をチェック
#!/bin/sh
while [ 1 ]
do
cat /proc/meminfo
sleep 1
done
[ls や、mallocするプログラムの調査]
以下のようなスクリプトをArmadillo-J上で実行して確認しました。
#!/bin/sh
while [ 1 ]
do
cat /proc/meminfo
./program_to_check
./program_to_check
./program_to_check
sleep 1
done
Makoto Nakamura wrote:
> いつもお世話になっています。中村です。
>
> 先日問い合わせたCGIのテストを行っていたのですが、
> メモリ管理について不明点があります。
>
> 自作のCGIを動作させてみたのですが、
> メモリが200kb程消費されている事がわかり
> 調査を行っていました。
>
> プログラム上異常な箇所が見当たらなかった為、
> cgi_genericをそのまま動作させてみた所
> 同じく200kb程消費されています。
>
> 同じCGIをいくつか複製し動作させてみた所、
> thttpdにアクセスしたタイミングで500エラーが返ってきたり
> 空白ページが表示されたりします。
> また、http://xxx.xxx.xxx.xxx/cgi-bin/
> とブラウザから入力してファイルリストを見ようとしても
> 同じく500エラーが返ってきたり、空白ページ
> または、以下のような中途半端なHTMLを取得してしまいます。
> ---------------------------------------
> <HTML><HEAD><TITLE>Index of /cgi-bin/</TITLE></HEAD>
> <BODY>
> <H2>Index of /cgi-bin/</H2>
> <PRE>
> mode links bytes last-changed name
> <HR>
> ---------------------------------------
> ※通常時はファイルリストも参照可能となっています。
>
> このメモリ量は「cat /proc/meminfo」を実行して
> MemFreeを見て判断しています。
>
> この消費されたメモリはいつ開放されるのでしょうか?
>
> 連続稼動が出来ないため非常に困っています。
>
> 動作環境は以下の通りです。
> AJ020
> atmark-dist-20051017.tar.gz
> linux-2.4.22-uc0-aj3.tar.gz
> +Etherドライバ修正版
> +thttpd 2.04 of 10aug98
>
> ちなみにAJ010の時にはこのエラーは発生していません。
>
> この問題に関して以下のような調査を行いましたので
> 念のため添付します。
> ----------------------------------------
> ・lsコマンド等を実行してもメモリが減り、戻らない
> ・単純なmalloc→freeを行うアプリを動作させると、
> 確保した分のメモリ量が減り、freeしても戻らない
> ・「cat /proc/kmsg &」を実行しておくと以下のメッセージが出る事がある。
> <4>Allocation of length 413696 from process 104 failed
> <4>Buffer memory: 460kB
> <4>Cache memory: 432kB
> <4>Free pages: 584kB ( 0kB HighMem)
> <4>Zone:DMA freepages: 0kB min: 0kB low: 0kB high: 0kB
> <4>Zone:Normal freepages: 584kB min: 80kB low: 160kB high: 240kB
> <4>Zone:HighMem freepages: 0kB min: 0kB low: 0kB high: 0kB
> <4>( Active: 149, inactive: 74, free: 146 )
> <4>= 0kB)
> <4>56*4kB 5*8kB 0*16kB 0*32kB 1*64kB 0*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB = 584kB)
> <4>= 0kB)
>
> ※process 104とはCGIのプロセスIDのようです。
> ・まれに「SIGSEGV」と表示される。
> ・まれに「fault-common.c 61」と表示されっぱなしになる。
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo
armadillo メーリングリストの案内