[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:54221] Re: メモリリークについて



こんにちは。

# 送信前に受信してみると、話が解決に向かっていそうなのですが、
# せっかく書いたので送ります。

On Wed, 9 Jun 2010 14:18:44 +0900
Seiji Kinoshita <jsynth@xxxxxxxxxxxxx> wrote:

> 現在、主にsamba(Ver.2:3.2.5-4lenny9)を利用し、
> ファイルサーバとして運用しておりますが、
> WindowsPCとの間でファイルを大量(ギガ単位です・・・)に転送し続けると
> SystemFault NoSpaceBufferOverflowというポップアップが表示され、
> ネットワークが切断されてしまいます。
> しばらくすると復帰します。
> その時、物理メモリは使い切ってしまっており、スワップが頻繁に発生しています。
> また、上記現象が起きていない時も、WindowsPCとの間でファイル転送時、
> topを起動し、様子を見ると、メモリがどんどん使用され、
> あまりメモリも開放されている様子がございません。
> 
> 何か良い解決方法をご存知でしたらご教授いただけないでしょうか?
> 
> H/Wスペック
>  CPU:Intel ATOM 330
>  MEM:2GB
>  Swap:4GB
> 
> よろしくお願いします。
> 

何となくですが、
sambaは関係なさそうな気がします。

というのも、手元にあるマシンは、MEM:1G、Swap:512M ですが、
1Gを超えるファイルを samba で Windows とやりとりしてますが
そういうエラーに遭遇した経験がありません。

それから、
> topを起動し、様子を見ると、メモリがどんどん使用され、
> あまりメモリも開放されている様子がございません。
とのことですが、
「メモリがどんどん使用されて、解放されない」という現象自体は
通常の動きなので、解放されないからといって、これが異常な動作とは
言いきれません。

これは、ページキャッシュという仕組みです。
ファイルを読むとき通常は、ハードディスクから読みますが、これはとても
遅いです。
最初に読んだ時に、メモリ上に蓄えておけば、2度目からは、ハードディスク
ではなく、メモリから高速に読み込めるという仕掛けです。

ですから、仮に
---
$ top
top - 21:37:38 up 30 days, 22:43,  1 user,  load average: 0.05, 0.08, 0.08
Tasks: 106 total,   1 running, 105 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1035168k total,   985512k used,    49656k free,       52k buffers
Swap:  2650684k total,     1028k used,  2649656k free,   582408k cached
---
であったとき、
「Mem:」の「49656k free」=本当に何も使ってないメモリ
「582408k cached」=キャッシュで使っているメモリ
となります。

何も使っていないメモリは無駄なので、積極的にキャッシュとして
使っているだけで、本当にメモリが足りなくなれば、キャッシュとして
使われているメモリは解放されます。

ですから、アプリケーションが使えるメモリは、だいたい
「49656k free」と「582408k cached」を足したものになります。

今回のように、大きなファイルにアクセスすると、大量にキャッシュされるので、
freeはあっという間に小さくなり、その分 cached が増えると思います。

# とはいっても、もし、Swapもなくなるとすれば、どこかで
# メモリリークしている可能性が高いとは思います。

ということで、これだけでは分からないので
/var/log/syslog
/var/log/messages
とかに情報あればよいのですが。

-- 
goungoun <gounx2@xxxxxxxxx>
http://goungoun.dip.jp/app/