Linux でサーバ管理していてメモリ使用状況をグラフ化しています。

1日の増加量はほとんど無いのですが、半年くらいの長期間で見てみると確実に一次関数的に増加しています。
これにはどういった理由が考えられるのでしょうか。
主に利用しているのはWebサーバとメールサーバのみです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:Ooooooooooooooo No.1

回答回数93ベストアンサー獲得回数0

ポイント5pt

http://e-words.jp/w/E383A1E383A2E383AAE383AAE383BCE382AF.html

メモリリークとは 【memory leak】 - 意味・解説 : IT用語辞典

id:taxa No.2

回答回数77ベストアンサー獲得回数0

ポイント20pt

http://www.linux.or.jp/

日本の Linux 情報

私が勝手に思う理由です。

全然関係ないかもしれません。

・メール再配送不達のたまり過ぎ

・アクセスログ・エラーログのファイル巨大化

・なぜか死なない子プロセス

・rootのメールがでかすぎ

・メールスプールのたまりすぎ

私も場合も、半年かけて45度の角度で増え続けました。

メールスプール、不要なユーザメール等を全部消し、巨大ログファイルを消して再起動すれば直りました。

参考にならなかったらごめんなさい。

id:katase_n

一時流行ったウィルスやcronの記述ミスなどでメールサーバが普段より極端に動いていてもメモリ使用量の増加率は変わりませんでした。

ログやメールスプールが関係あるなら二次関数的に増える気もします。

経験を積んでいないので「普通はこうだ」というのが分からない状態です・・。

2004/07/27 12:51:42
id:JULY No.3

回答回数966ベストアンサー獲得回数247

ポイント10pt

基本的な質問なんですが、「メモリ使用状況」をどのように取得してますか?

例えば、上記 URL の vmstat で見るとか、

上記 URL の top で見るとか。

top や ps aux で、どのプロセスがどのくらいメモリを使っているかが

分かりますので、それを継続的に調べれば、どのプロセスが「太った」のか

が分かるかもしれません。

あるは単にディスクキャッシュの取り分が増えているだけ、ということは

ないですか?

id:ozonepapa No.4

回答回数288ベストアンサー獲得回数0

ポイント20pt

このURLはダミーです。

どのサービスが問題かはわかりませんが、メモリーリークが原因ではないでしょうか。

メモリーリークはプログラムのバグで、プログラムが実行中に獲得したメモリーを不要になっても開放せず、獲得した状態のままになっていることを言います。

これは、Turbolinux8サーバのページですが、メモリーリークが何点か報告されています。

http://www.atmarkit.co.jp/flinux/rensai/apache16/apache16b.html

@IT:Apacheパフォーマンス・チューニングの実践(2/2)

これも、該当しないかもしれませんが、「プロセスの制限と待機プロセス」の最後のほうにメモリーリークの可能性が書かれています。

メモリーリークを見つけるプログラムのようです。

id:katase_n

まとめて回答します。

メモリ使用率は /proc/meminfo の used から buffers と cached を引いた値をグラフ化しているようです。

webサーバやメールサーバを再起動させてもあまり改善されなかったり top や ps での表示されたメモリの合計とメモリ利用率は全く違っているので(数百MB程)リークしているのかとは思いますが、それにしてもそれほど大きくなるのかなぁと。

上級者が設定したサーバは1年経っても2年経ってもメモリは食いつぶされないのでしょうかね。。

2004/07/27 14:15:19
id:aki73ix No.5

回答回数5224ベストアンサー獲得回数27

ポイント20pt

http://pcweb.mycom.co.jp/news/2004/07/02/006.html

今年上半期のウイルス被害報告、前年比で倍増 - 大量の亜種登場が原因 | ネット | マイコミジャーナル

URLはダミーです

再起動しても、メモリ使用量にほとんど変化がないと言うことは、単純にアクセス数の増加によるデーモンの起動数、メールトラフィックの増大による、プロセス数の起動増加ではないでしょうか?メール中継が増えればアクセス量も増えると思います。

ただ、近年ウィルスの量が右肩上がりに増えているので、その影響もあるかもしれませんね

サーバへのパケットの総量などもあわせてみると参考になるかと思います

一番確実なのはtopやpsのイメージを定期的に同じ時間の同じ曜日に取っておいて比較してみることでしょうか

id:katase_n

[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前後だった記憶です。

2004/07/29 17:09:00
id:JULY No.6

回答回数966ベストアンサー獲得回数247

ポイント15pt

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 等で表示される「メモリ量」の意味合いがちょっと複雑なので(私もよく

分からない(^^;)そのまま足し算すれば、全体のメモリ使用量となるわけでは、

ありません。「合わない」=「進入された」

でないことに注意して下さい。

id:katase_n

ありがとうございます。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を再起動したらこんな感じになりました。

ここから毎日少しずつメモリが消費されていくんですよね。。

取り敢えずここで終了します。

2004/07/31 20:28:48
  • id:JULY
    やっぱり ps

    再起動後を見ると、プロセスが使用しているメモリ量が 162MB という
    ことですから、これだと普通ですね。
    ここからどういったプロセスがどれだけ使っているのか、また、
    そもそも、プロセス自体は増えていないのか、といった所を ps
    で調べていくのが間違いないと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません