数ヶ月経ったある時点でスワップを使うようになり、動作が極端に遅くなってしまいます。
どんな設定でもメモリは必ず少しずつ減る、または、うちのサーバは1年間再起動無しでメモリ使用量はLinux起動当初とほとんど変わりがない、などの経験談を教えて下さい。
この方法で減ったかどうか追跡できます
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-4.html
The Linux Kernel: メモリ管理
この文章から推察するに、立ち上げているいるプロセスによるって事でしょうね
http://www.hatena.ne.jp/1091273212#
RedHat9 を使っていて思ったのですが、1年など長期間起動したままにしておくと、メモリは時間と共に徐々に減っていくものなのでしょうか。 数ヶ月経ったある時点でスワップ.. - 人力検索はてな
OSだけの問題ではなく、アプリーケーションが情報を処理する際に、メモリーを利用し、開放する処理をしなければ、使用状態のメモリーが増えます。
メモリーリークなんて言い方もします。
URLはダミーです。
直接解決に結びつかないと思いますのでポイントは不要です。
一年も再起動なしで使用したことはありませんが、sendmailの設定が不十分で、2ヶ月ぐらい経過した頃、何も操作していないのにハードディスクがアクセスしっぱなしになって、再起動しても同じでした。
ADSLモデムもアクセスしっぱなしだったのを不審に思って、ネットワークケーブルを外してネットから物理的に切り離してログを見てみたら、SMTPの踏み台にされてました。
seldmailのRELAYをローカルのみにしたら直ったので、以降確実に通すところだけRELAYにしてこの数ヶ月は再起動なしで普通に使ってます。
Windowsでは、「service.exe」というファイル(trinooというワーム)が、メモリー使用量を徐々に増幅させて、メモリーエラーを起こすそうです。
Microsoft Corporation
URLはあからさまなダミーです。
Windows NTの時代はOSのメモリのガベージコレクション機能の不備により一見メモリが余っているように見えても連続して必要なメモリを確保できずにサーバがフリーズしてしまうようなことがありました。
さてLinuxの話ですが、RedHat9の時代であれば、あまりそういう話は聞いたことがありません。適切に設定されたサーバでは、1年以上稼動させておいても問題になったことはないのですが、しばらく前にカーネルの不具合があったり、あと使用者の都合(移設とか)で再起動したりすることもあるので、あまり話題にならないのかも。
そういう意味では、そういうことが基本的には「ない」からこそ話題にならない、ぐぐっても引っかからないのではないでしょうか。実際、セキュリティの問題が無ければ、OSそのものの再起動はまれです。たとえばapacheの不具合が最近ありましたが、それでOSの再起動はありえません。
結局、普段と変わりなく使用できている(メモリの空きも含めて)のが当たり前だからだと思います。うちにある何台かのLinux機も特に何も無ければ再起動なんて必要になったことはありません。
徐々に減ったように見えるのは、使いっぱなしにしているアプリケーションがいるからです。
The Linux Kernel Archives
ただ、現象が発生するというだけでは、自分の糧にもなりません。
問題解決の観点から言いますと、メモリが枯渇するような状態になるからこそ、スワップが発生するわけで、その原因に思い当たらない場合、地道な調査が必要になります。
定常的なメモリ使用量を統計として取得したり、定期的に起動しているプロセスを確認したり、ログを見て不正終了しているプロセスはないか、またゾンビが(大量に)発生していないか等確認されるべきでしょう。
redhat.com | Home
URL はダミーです。
Redhat9 に限ると、仕事で立ち上げたサーバがちょうど半年を迎えますが、
全く問題になっていません。Web サーバ、PostgreSQL、メールサーバ、DNS サーバ
が動いています。他のディストリビューションですが、年に1度の電気設備の点検時
に落とす以外は普通に動いています。
強いて言うと、Tomcat + つたない Java プログラム + Remoting MX という環境で、
Tomcat を再起動してやらないと、Java の VM が使えるメモリが無くなって、という
のは経験しました。ただ、これはあくまでも Java VM の問題で、Linux 自体が、
ということではありません。Tomcat 以外の動作には問題が無く、Tomcat を再起動
すれば元に戻ります。
http://www.hatena.ne.jp/1090896886
Linux でサーバ管理していてメモリ使用状況をグラフ化しています。 1日の増加量はほとんど無いのですが、半年くらいの長期間で見てみると確実に一次関数的に増加しています.. - 人力検索はてな
のいわしにも書いたのですが、まずは、
ps で動作しているプロセスを監視するのが先決だと思います。
http://rhn.redhat.com/errata/RHSA-2004-182.html
rhn.redhat.com | Red Hat Support
今までの経験上、再起動なしでも運用上問題になるほどの、メモリ使用量の
変化はあった事がないです。ただ、動かしているのはコンテンツサービスの
プログラムなので、ちょっと状況が異なると思います。
以前の質問でも回答が多かったと思いますが、メモリなどリソースが減って
いるかな?と思った場合には、各プロセスの状況をチェックして状況を把握
するのが一番早いです。(top,freeなど)
あとは使用しているメールサーバ、Webサーバなどのバージョンを確認して、
それ以降にメモリリークの修正が入ってないかを見るとよいでしょう。
rpm版だと古いバージョンだったりしますので注意して下さい。
セキュリティ面で何か不安があるなら、Nessusを使って調べるとよいと思い
ます。他の方が回答してますが、踏み台やその他問題がある個所を検出して
くれるかもしれません。
Linuxサーバは世界にたくさんあります。1年再起動なしぐらいでメモリを
使い切ってたら、こんなに普及してないと思いますよ。
なんか不安定になったときにメモリを足した事があるけど、結局何故不安定になったかというと、ただ常駐ソフトが勝手に増えてたりするわけです。メモリにも寿命があるので買い換えるのもいいと思います。
Linux系OSはWindowsのようなリメモリーリークは殆んど起こらないので、作ったプログラムが悪さしてるわけではないのなら、まず起こらないのではないでしょうか?
http://www5.plala.or.jp/vaio0630/apache/apache_proxy.htm
ApacheでProxyサーバー
サーバはCGIなども動作させているのでしょうか?
Perlを排除して、コンパイルした実行ファイルを直接動かすようにすると、かなりメモリ使用量が減ります。
大学のUNIXサーバ凝ったCGIやCrontabで落としたことがあります(^_^;
あとは、このURLのようにサーバのキャッシュのタイムアウトの設定が適正になってないので際限なくメモリが消費されていく可能性はないでしょうか?
知り合いのサーバはWindows2000なのですが1年間で再起動1回で(セキュリティパッチ当てるために1度再起動したことがあるそうです)
どうしてそんなに安定しているのか聞いたところ
サーバPCでアプリケーションを起動しない。起動したアプリケーションは終了させない(例えばブラウザの窓は開きっぱなしだそうで、絶対に閉じないで再利用するのだそうです)WindowsとLinuxではちょっと違うと思いますが参考までに
http://www.hatena.ne.jp/1091273212##
RedHat9 を使っていて思ったのですが、1年など長期間起動したままにしておくと、メモリは時間と共に徐々に減っていくものなのでしょうか。 数ヶ月経ったある時点でスワップ.. - 人力検索はてな
うちは Debian でサーバ立てて2年間になり、つい先日誤って落としてしまうまでは10ヶ月間起動しっ放しでした。
MRTG をチェックする限りでは、メモリ使用量はずっと安定しています。
たま〜に、ガガガガ言って動作が遅くなり、SWAP しまくりますが、大抵何かしらのプロセス(ていうか自作プログラム)が暴走しているので、それを kill してやると解消します。
私は毎日 ps aux の結果とかを自分宛にメール送信してチェックしているのですが、
そういう風にしてどのプロセスが悪いのか探すのは如何でしょう。
様々な回答、ありがとうございます。
少しでも検討を付けたかったのですが矢張り地道に監視してみます。
日頃サーバ管理の経験を聞く機会がないので、大変参考になりました。
単語や概念的なものは聞くのですが、経験談をほとんど聞いたことがないのです…。
http://www.hatena.ne.jp/1090896886
ここで解決しそうになかったので訊き方を変えました。