1日の増加量はほとんど無いのですが、半年くらいの長期間で見てみると確実に一次関数的に増加しています。
これにはどういった理由が考えられるのでしょうか。
主に利用しているのはWebサーバとメールサーバのみです。
http://e-words.jp/w/E383A1E383A2E383AAE383AAE383BCE382AF.html
メモリリークとは 【memory leak】 - 意味・解説 : IT用語辞典
日本の Linux 情報
私が勝手に思う理由です。
全然関係ないかもしれません。
・メール再配送不達のたまり過ぎ
・アクセスログ・エラーログのファイル巨大化
・なぜか死なない子プロセス
・rootのメールがでかすぎ
・メールスプールのたまりすぎ
私も場合も、半年かけて45度の角度で増え続けました。
メールスプール、不要なユーザメール等を全部消し、巨大ログファイルを消して再起動すれば直りました。
参考にならなかったらごめんなさい。
http://www.linux.or.jp/JM/html/procps/man8/vmstat.8.html
Manpage of VMSTAT
基本的な質問なんですが、「メモリ使用状況」をどのように取得してますか?
例えば、上記 URL の vmstat で見るとか、
http://www.linux.or.jp/JM/html/procps/man1/top.1.html
Manpage of TOP
上記 URL の top で見るとか。
top や ps aux で、どのプロセスがどのくらいメモリを使っているかが
分かりますので、それを継続的に調べれば、どのプロセスが「太った」のか
が分かるかもしれません。
あるは単にディスクキャッシュの取り分が増えているだけ、ということは
ないですか?
ABC.com
このURLはダミーです。
どのサービスが問題かはわかりませんが、メモリーリークが原因ではないでしょうか。
メモリーリークはプログラムのバグで、プログラムが実行中に獲得したメモリーを不要になっても開放せず、獲得した状態のままになっていることを言います。
http://software.fujitsu.com/jp/security/products/linux/security-...
Linux セキュリティ情報 : 富士通
これは、Turbolinux8サーバのページですが、メモリーリークが何点か報告されています。
http://www.atmarkit.co.jp/flinux/rensai/apache16/apache16b.html
@IT:Apacheパフォーマンス・チューニングの実践(2/2)
これも、該当しないかもしれませんが、「プロセスの制限と待機プロセス」の最後のほうにメモリーリークの可能性が書かれています。
メモリーリークを見つけるプログラムのようです。
まとめて回答します。
メモリ使用率は /proc/meminfo の used から buffers と cached を引いた値をグラフ化しているようです。
webサーバやメールサーバを再起動させてもあまり改善されなかったり top や ps での表示されたメモリの合計とメモリ利用率は全く違っているので(数百MB程)リークしているのかとは思いますが、それにしてもそれほど大きくなるのかなぁと。
上級者が設定したサーバは1年経っても2年経ってもメモリは食いつぶされないのでしょうかね。。
http://pcweb.mycom.co.jp/news/2004/07/02/006.html
今年上半期のウイルス被害報告、前年比で倍増 - 大量の亜種登場が原因 | ネット | マイコミジャーナル
URLはダミーです
再起動しても、メモリ使用量にほとんど変化がないと言うことは、単純にアクセス数の増加によるデーモンの起動数、メールトラフィックの増大による、プロセス数の起動増加ではないでしょうか?メール中継が増えればアクセス量も増えると思います。
ただ、近年ウィルスの量が右肩上がりに増えているので、その影響もあるかもしれませんね
サーバへのパケットの総量などもあわせてみると参考になるかと思います
一番確実なのはtopやpsのイメージを定期的に同じ時間の同じ曜日に取っておいて比較してみることでしょうか
[root@ root]# free -m
total used free shared buffers cached
Mem: 975 967 8 0 0 66
-/+ buffers/cache: 899 75
Swap: 956 43 913
[root@ root]# /etc/init.d/httpd stop
httpdを停止中: [ OK ]
[root@ root]# free -m
total used free shared buffers cached
Mem: 975 944 31 0 0 63
-/+ buffers/cache: 880 94
Swap: 956 40 916
[root@ root]# /etc/init.d/httpd start
httpdを起動中: [ OK ]
[root@ root]# free -m
total used free shared buffers cached
Mem: 975 947 28 0 0 64
-/+ buffers/cache: 882 93
Swap: 956 40 916
[root@ root]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
apache 11007 0.0 0.9 21048 9244 ? S 16:56 0:00 [httpd]
apache 11008 0.0 0.9 21048 9244 ? S 16:56 0:00 [httpd]
apache 11009 0.0 0.9 21048 9244 ? S 16:56 0:00 [httpd]
apache 11010 0.0 0.9 21048 9244 ? S 16:56 0:00 [httpd]
apache 11011 0.0 0.9 21048 9244 ? S 16:56 0:00 [httpd]
一応減ってはいるのですが。。1GB近くもリークしているんでしょうか。。
Linux起動直後のメモリ使用量は200MB前後だった記憶です。
http://www.math.kobe-u.ac.jp/~kodama/tips-free-memory.html
Linux のメモリー管理(メモリ−が足りない?,メモリーリークの検出/防止)(Kodama's tips page)
上記 URL に free コマンドで見たときの値の読み方が書いてあります。
で、free の結果で Web サーバの停止、起動の前後を見せて頂きましたが、
バッファやキャッシュに取られている分を除いたメモリ使用量、空き容量は
(「-/+ buffers/cache」の所です)
最初:
使用中:899 MB
空き : 75 MB
Web サーバ停止後:
使用中:880 MB
空き : 94 MB
Web サーバ起動後:
使用中:882 MB
空き : 93 MB
ということですから、これ自体は特に不思議ではありません。Web サーバを
稼働させていてアクセスがあれば、次に同じアクセスがあったときのパフォーマンス
をよくするために、Web サーバ自体が確保するメモリがある程度多くなるのは普通
です。上記の結果では、約 17 MB がそういった形で使用されていたメモリだと思われます。
むしろ気になったのが、Web サーバが起動していない状態でも、880 MB ものメモリが
利用されていることです。ちなみに私の自宅サーバでは、Web、DNS、DHCPD、NTPD、Samba、PostgreSQL、SSH、Postfix といったものが動作していて、131 MB の
使用量です(ちなみに X は立ち上げていません)。
880 MB ものメモリを使っていること自体が不思議に思います。やはり、ps や top
でどんなプログラムが動いていて、どのくらいメモリを使っているのかを一度
チェックした方が良いと思います。
http://fumika.jp/nikki/2004/04/chkrootkit
chkrootkit のインストールと利用方法
もし、ps や top で調査した結果と、free の結果が大きく食い違っているとしたら、
考えたくはありませんが、乗っ取られた可能性もあります。
上記 URL は chkrootkit というもので、侵入者が自分の痕跡を隠したりするための
rootkit と呼ばれるものを検査するものです。ps で見るとそんなにプロセスが
存在しないのに free(/proc/meminfo)で見るとメモリが多く消費されていると
したら、rootkit で ps コマンドが別のものに置き換えられている可能性が
あります。
ただ、ps 等で表示される「メモリ量」の意味合いがちょっと複雑なので(私もよく
分からない(^^;)そのまま足し算すれば、全体のメモリ使用量となるわけでは、
ありません。「合わない」=「進入された」
でないことに注意して下さい。
ありがとうございます。chkrootkit を試してみましたが大丈夫のようでした。
Windowsの場合も長時間起動したままにしていると全てのソフトを終了させてもメモリは減ったままですよね。。それと同じなら再起動しか方法は無いのでしょうか。
[root@ root]# free -m
total used free shared buffers cached
Mem: 975 628 346 0 89 377
-/+ buffers/cache: 162 813
Swap: 956 0 956
Linuxを再起動したらこんな感じになりました。
ここから毎日少しずつメモリが消費されていくんですよね。。
取り敢えずここで終了します。
一時流行ったウィルスやcronの記述ミスなどでメールサーバが普段より極端に動いていてもメモリ使用量の増加率は変わりませんでした。
ログやメールスプールが関係あるなら二次関数的に増える気もします。
経験を積んでいないので「普通はこうだ」というのが分からない状態です・・。