0

「top」コマンドの結果によると、メモリ使用量が大幅に増加しました。ただし、各プロセスのメモリ使用量に応じて、使用されるメモリはそれほど多くありません。

top - 19:57:01 up 1 day, 19:24,  6 users,  load average: 0.17, 0.22, 0.57
Tasks: 500 total,   1 running, 499 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  98858004k total, 90524192k used,  8333812k free,  1039700k buffers
Swap: 16777208k total,        0k used, 16777208k free, 72896460k cached

Linuxはバッファ/キャッシュメモリ使用量を使用済みとしてマークするようですが、アプリケーションでは使用されていません。この場合、まだログメモリを利用できます。

ただし、メモリとスワップが使い果たされたため、サーバーに障害が発生しました。これが一部のアプリケーションのメモリリークである可能性はありますか?

メモリリークが発生した場合、メモリ使用量はプロセスに計算されますか?

free -m
             total       used       free     shared    buffers     cached
Mem:         96541      88445       8095          0       1016      71223
-/+ buffers/cache:      16205      80335
Swap:        16383          0      16383
4

3 に答える 3

1

メモリリークが発生した場合、メモリ使用量はプロセスに計算されますか?

はい、メモリリークは、もはや必要ではないが解放されていないデータにすぎません。free(trash);

ただし、メモリとスワップが使い果たされたため、サーバーに障害が発生しました。これが一部のアプリケーションのメモリリークである可能性はありますか?

はい、プログラムが大量のRAMを使用していることを監視し、 http://valgrind.org/でデバッグします。

于 2012-06-29T09:04:08.267 に答える
0

0であることを確認してください。/proc/sys/vm/overcommit_memoryそうでない場合、暴走した記憶を食べるプロセスを見つけるのははるかに困難です。

于 2012-06-29T09:08:51.177 に答える
0

TL; DR

リークがカーネルにない限り、リークされたメモリはアプリケーションのプロセスに対して考慮されるべきです。

Linuxと空きメモリ

Linuxはキャッシングに非常に積極的であり、ファイルシステムブロックのキャッシングとバッファの保存に多くの使用可能なメモリを割り当てる傾向があります。これは非常に動的であるため、アプリケーションが必要な場合はこのスペースを引き続き使用できますが、その間、Linuxはそれを使用しようとします。

つまり、使用されるメモリの割合が高いことがメモリリークの症状であると想定しないでください。カーネルにとってはいつものことです。

関連項目

http://linux.about.com/od/lsa_guide/a/gdelsa44.htm

于 2012-06-29T09:10:21.467 に答える