ubuntuがメモリを解放しないように見えるのはなぜですか?


11

私はapache2 + phpと他のWebサーバーアプリを使用しています。

Webサーバーに接続するセッションとしてモニターしています。RAMメモリがいっぱいです。

ただし、セッションを切断しても、RAMメモリは解放されません。

私はを介して監視していますがfree -m、セッションが接続されていなくても、解放されていないメモリが表示されます。

解決策はありますか?


free -mには注意してください。最初の行は、バッファとキャッシュを含むメモリ使用量を示しています。2行目は、使用されているメモリーからバッファーとキャッシュを差し引いたものを示しています。これは実際に使用可能なメモリーです。htop監視の目的などにも試してみてください。はるかに直感的で、公式リポジトリで利用できます。本当にメモリが不足している場合は、実行しているWebアプリケーションのタイプ、使用しているRAMの容量、使用されているものなどすべての情報を提供してください。free -mなどの出力を貼り付けます。
Johnride、2014

3
問題はないので、解決策はありません。Linuxは、使用可能なRAMをファイルのバッファーとして使用します。
CMDを実行する2014

しかし、ここでfireコマンドの後:sudo sync && sudo sysctl -w vm.drop_caches = 3これは、使用可能な空きメモリが適切であることを示し、アプリがより適切に動作します。
Tejaskumarタンク2014


私はVPSサーバーで最も経験があり、最近メモリ管理で完全に動作するdebian 9.0を設立しました。
Tejaskumarタンク

回答:


12

次のコマンドを使用して、未使用のメモリを解放できます。

sudo sync && sudo sysctl -w vm.drop_caches=3

このコマンドは、キャッシュされたデータを同期してから、実行時にOSパラメータを書き込みます。これは、/ proc / sys / vm / drop_cachesにあります。このパラメータはカーネルによって一度読み込まれ、その後、未使用のメモリを解放します。

基本的に、カーネルはキャッシュに3つのセクションを予約します。これにより、メモリ使用量が増加する可能性があります。

  • ページキャッシュ
  • iノード

このパラメータに書き込むと、カーネルがRAMからクリーンなページキャッシュ、デントリ、およびiノードを削除し、メモリが解放されます。割り当てることができる3つの値があります。

  1. vm.drop_caches = 1 空きページキャッシュ。
  2. vm.drop_caches = 2は、 空のエントリとiノードを解放します。
  3. vm.drop_caches = 3つの 無料のページキャッシュ、デントリ、およびiノード。

重要: 実行後、これは通常の状態に戻ります。つまり、ページキャッシュ、デントリ、およびiノードのキャッシュを再開します。サーバーの構成とアプリケーションに応じて使用してください。


1
もう少し詳しく説明してもらえますか?
AB

このコマンドは、毎週または毎日の終わりに毎日未使用のメモリをすべて解放する場合にのみ役立ちます。また、それぞれ異なる目的で3または2または1を解放します。セッションが読み込まれたサーバーでこれを試さないでください。
Tejaskumarタンク

1
コメントとしてではなく、回答を編集してください。
AB

sudo sync & sudo sysctl -w vm.drop_caches=3
Nyxynyx

1
@GuillermoGarcia Ubuntu 18.04.3でbashを使用。私はもう一度含める必要がありましsudoた。それ以外の場合、エラーが発生しますsysctl: permission denied on key 'vm.drop_caches'
Nyxynyx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.