Linuxサーバでメモリの確認方法と対策について

このQ&Aのポイント
  • この記事では、Linuxサーバで使用しているメモリの確認方法について説明します。
  • また、メモリの使用量が徐々に増え続ける原因と対策についても考えてみましょう。
  • CentOS 5での設定の特性や、ApacheとSendmailの起動に関する情報も含まれます。
回答を見る
  • ベストアンサー

linuxサーバで使用しているメモリの確認方法

linuxサーバの使用しているメモリの確認方法について教えて頂きたいです。 たとえば以下のようなメモリ表示だった場合に 実際に使用可能なメモリは free+の148588(厳密ではないかもですが)かとおもいます。 total used free shared buffers cached Mem: 192572 190944 1628 54912 20112 126848 -/+ buffers/cache: 43984 148588 Swap: 96384 0 96384 気にしているのはused- の43984 の数字ですが こちらはtotalからfree+を引いた数値ですが、この数字が linux起動から徐々に増え続けています。 この used- ですが、こちらは実際に使用しているメモリという認識でよいでしょうか。 となると、徐々に増え続けているとそのうち枯渇するのではと思いました。 因みにこのサーバではApacheとSendmailが起動してはおりますが 実際に外部等に公開しているわけでもなくただ検証用として起動しており 特にメールが流通するでもなく、Apacheもなにもアクセスない状態です。 このまま同様の設定で本番稼働等をすると同じような現象が発生してしまうのではないかと 気にしております。 徐々に上昇してしまう原因として考えられることがあれば教授いただけますでしょうか。 因みにOSはCentOS 5です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

原因は、私にはわかりませんが、とりあえず、 対処できそうなコマンドをば。 $ ps aux --sort -rss | head -n 20 物理メモリを食ってる上位20位がでます。 # echo 1 >/proc/sys/vm/drop_caches 上の通り、1だと、ページキャッシュのみの開放。 2 dentry、inode の解放。 3 ページキャッシュ、dentry、inode の解放。 一応、# sync で同期を完了させてからのコマンドをおすすめします。

nicostars
質問者

お礼

ありがとうございます、 調査した結果、dentryがメモリを使用しているようでした。 特に解放する必要もないためこのままでいようとおもいます。

その他の回答 (3)

  • ya9pon
  • ベストアンサー率34% (88/254)
回答No.3

topコマンドで様子を見てみては。

nicostars
質問者

お礼

ありがとうございます。 topやsarなどで追っているのですがなかなか それらしいものが特定できず苦戦しておりました。

  • notnot
  • ベストアンサー率47% (4843/10252)
回答No.2

freeの見方はお書きの通りで合ってます。 使用メモリが増える原因はこれだけでは何とも。実際にどのプロセスがメモリを使っているのかを調べないと。

nicostars
質問者

お礼

ありがとうございます。 ps auxなどで結果を確認しているのですが メモリを多く使用しているようなプロセスが見当たりませんでした。 もう少し調べてみます。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

freeコマンドの結果の見方…だと、下記のページ辺りでしょうか。 http://www.goofoo.jp/2011/05/1107 使用状況なら http://www.atmarkit.co.jp/flinux/rensai/linuxtips/088vmstat.html とか。

nicostars
質問者

お礼

ありがとうございます。 参考にさせていただきます。

関連するQ&A

  • Linux系OSのメモリの解放について

    お世話になります。 CentOS6.4を使ってPHPアプリを動かしています。 結構メモリを消費するアプリなので、 使っているうちにOutOfMemoryになることがあります。 ※正常終了する場合もあります。 正常に終了しようがOutOfMemoryになろうが、 大量にメモリを確保した後は、そのまま解放されていないように見えます。 例えば、freeコマンドで見たときにに usedが減りません。 【例】 アプリケーション実行前 # apachectl restart # free total used free shared buffers cached Mem: 16334660 472788 15861872 0 105700 120124 -/+ buffers/cache: 246964 16087696 Swap: 2047992 0 2047992 ここでアプリケーション実行し正常に終了。 # free total used free shared buffers cached Mem: 16334660 1754276 14580384 0 106836 120484 -/+ buffers/cache: 1526956 14807704 Swap: 2047992 0 2047992 apacheを再起動すればusedは減るのですが、 他にusedになっているメモリを開放する方法はあるのでしょうか? また、どのようなメカニズムで解放されないのか教えていただけるとありがたいです。 よろしくお願いします。

  • サーバのメモリについて

    現在、CentOS5にてサーバを運用しています。 昨日から、ホスティング業者より、残メモリが少ない旨のメールが届くようになりました。 そこで、メモリを確認したところ以下のような状態でした。 #free -m total used free shared buffers cached Mem: 8118 5721 2397 0 372 4811 -/+ buffers/cache: 537 7580 Swap: 2047 0 2047 linuxはメモリに空きができると、バッファやキャッシュに割り当て、 そのバッファやキャッシュも空きメモリとして計算できるようですので、 上記のような場合ですと、7.5Gくらい空きがあるということになり、 問題ないと考えて大丈夫でしょうか。 また、バッファやキャッシュで確保しているメモリを解放する方法はありますでしょうか。

  • サーバのメモリ増設をするのですが・・・

    サーバのメモリ512M×2が常に使用量が多いようなので 1G×2に増設しようと思っています。 total used free shared buffers cached Mem: 1035464 1022208 13256 0 8604 911120 -/+ buffers/cache: 102484 932980 Swap: 2031608 864 2030744 そのメモリはPC3200 DDR 400のものです。 購入後一応memtestを走らせたいのですが、 サーバをできるだけ止めたくないのでPC2700まで使える 別のデスクトップのパソコンで確認することはできるでしょうか? 一応動くならデスクトップのパソコンで確認したいです。

  • 【メモリ]】vmstat、free、topの表示

    Linux(CentOS)でサーバのメモリ状態を確認するために 以下のコマンドを実行しました。 ・vmstat ・free ・top 【vmstat】 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 140 29812 137284 242088 0 0 0 3 2 0 1 0 96 3 0 【free】 total used free shared buffers cached Mem: 515312 485500 29812 0 137284 242088 -/+ buffers/cache: 106128 409184 Swap: 1052216 140 1052076 【top】 Mem: 515312k total, 485500k used, 29812k free, 137284k buffers Swap: 1052216k total, 140k used, 1052076k free, 242088k cached 各コマンドの表示結果の関連性を教えてください。 1.vmstatコマンドでは「used」項目が表示されないため  メモリの使用量が分からない? 2.「used」項目と「free」項目を足し合わせると、実メモリサイズ(total)と一致する。  「buff(ers)」項目と「cashe(d)」項目は、実メモリの情報?仮想メモリの情報? 3.「buff(ers)」項目と「cashe(d)」とは?また違いは?  #freeコマンドでは、「cashed」項目は「Mem(実メモリ)」列に表示されているが  #topコマンドでは、「Swap(仮想メモリ)」列に表示されている。 4.「-/+ buffers/cache:」列の意味は?  「used」項目と「free」項目を足し合わせると、実メモリサイズ(total)と一致する。  #「Mem」項目の「buffers」項目と「cashed」との違いは? ご教示お願いいたします。 <環境> CentOS(5.5) カーネルバージョン:2.6.18-194.11.3.el5 実メモリ:512MB スワップ領域:1024MB procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 140 29812 137260 242080 0 0 0 3 2 0 1 0 96 3 0 top - 17:00:00 up 125 days, 16:04, 1 user, load average: 0.05, 0.05, 0.02 Tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.2%sy, 0.4%ni, 96.2%id, 3.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 515312k total, 485500k used, 29812k free, 137260k buffers Swap: 1052216k total, 140k used, 1052076k free, 242080k cached

  • コマンドラインのfreeでメモリ残量が減る

    Linuxの2.4系カーネルを使用した専用機を作っています。 Cで作ったメインプロセスの他、表示(GDK)、データベースなどのプロセスが 動いているのですが、起動中にコマンドラインから free -b -s 1 でメモリ使用量 のログをとってみると、最初は total used free shared buffers cached Mem: 253534208 238202880 15331328 0 4571136 138551296 -/+ buffers/cache: 95080448 158453760 Swap: 0 0 0 だったのが、freeのすぐ下の数値(15331328)がじわじわと減少していきます。 最初の朝の起動時には1533万バイトが、翌朝に1060万バイトほどになったので、 このままのペースだと3日ほどで0になりそうです。 この数値はどういう意味あいのデータなのでしょうか?

  • freeコマンドの見方を教えてください。

    実行して以下のようになったのですが buffers=25100 cached=255876と -/+ buffers/cacheの列の意味が分かりません。 結果をどのように見ればよいでしょうか? [root@linux mrtg]# free       total used free shared buffers cached Mem: 255876 237760 18116 0 25100 95504 -/+ buffers/cache: 117156 138720 Swap: 522104 68888 453216

  • サーバーのメモリーの状態

    redhat linux 6.2 のサーバーで、特にアクセスはない状態として、 メモリーの状態を調べると、(free -m) total used free shared buffers cached Mem: 250 247 3 24 194 35 -/+ buffers/cache: 17 233 Swap: 517 0 517 と表示されます。 メモリーの使われている量が多すぎるような気がするのですが、これは、正常な値でしょうか。 (とくに、バッファーという所が、192Mも使われています。これは、正常な値でしょうか。そもそも、バッファーというのは、何を表しているのでしょうか。)

  • メモリの使用量について

    メモリの使用量の確認方法について教えてください。 freeコマンドを実行すると以下のように表示され、2GB中1.3GBを使用していることが分かります。 total used free shared buffers cached Mem: 2072828 1358364 714464 0 175372 836028 -/+ buffers/cache:346964 1725864 Swap:2096472 0 2096472 どのプロセスがメモリを消費しているか調べたいと思い、topコマンドを実行後、"M"でメモリの消費量の多い順にプロセスを並べ替えて、使用率の合計を計算してみました。 しかし、その合計値は約20%ほどです。 2GBのメモリを積んでいますので400MBほどしか使用していないことになります。 freeコマンドとtopコマンドでどうしてこんなに大きな差が出ているのでしょうか? また、どちらが正しい値なのでしょうか? ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • swapの作成でわからないところがあります。

    こんにちは。 LPICの勉強をはじめたのですが、 swapを作る練習をしていてわからないところが出てきました。 hda3という512Mのスワップ領域を作ったつもりなのですが スワップを有効にするとfree -mでswapが40507と激増している 気がして不思議に思っています。 よければ教えてください。 [root@localhost ~]# free -m total used free shared buffers cached Mem: 249 229 20 0 7 88 -/+ buffers/cache: 133 116 Swap: 509 0 509 [root@localhost ~]# fdisk -l Disk /dev/hda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/hda1 1 2550 20482843+ 83 Linux /dev/hda2 2551 2615 522112+ 82 Linux スワップ /dev/hda3 2616 2678 506047+ 82 Linux スワップ Disk /dev/hdb: 40.0 GB, 40020664320 bytes 16 heads, 63 sectors/track, 77545 cylinders Units = シリンダ数 of 1008 * 512 = 516096 bytes デバイス Boot Start End Blocks Id System [root@localhost ~]# swapon /dev/hda3 [root@localhost ~]# free -m total used free shared buffers cached Mem: 249 248 1 0 7 88 -/+ buffers/cache: 152 97 Swap: 40507 0 40507 [root@localhost ~]#

  • Linuxのメモリの関して

    質問1: freeというコマンドで見たところ、freeが少ないで、大半がcachedとして 使われているそうです。 このcachedに使われたメモリはどんなコマンドで解放することできるでしょうか? 質問2: topというコマンドで見たところ、httpdというプロセスが沢山のメモリ使っている(ひとつのhttpdプロセスは140MBぐらい)そうです、このhttpdはApacheのプロセスで、どうしてこんなに沢山メモリ使うでしょうか? 以上、どうぞよろしくお願いします。