メモリをすべて使用したものが見つかりません

メモリをすべて使用したものが見つかりません

サーバーには約24GBのメモリがあります。実行するとfree -gメモリが使い果たされることがわかります

             total       used       free     shared    buffers     cached
Mem:            23         23          0          0          0         18
-/+ buffers/cache:          4         19
Swap:           56          2         53

topそれから、それまでにこれらすべてのメモリが何によって使い果たされたのかを調べてみましたM。しかし、その列のメモリはかなり空いているようです%MEM

メモリを解放するにはどうすればいいでしょうか?これは計算用のサーバーなので、コンピューターを再起動しない方がよいでしょう。

答え1

の出力を誤解していますfree。投稿した内容では、19 GB の RAM が空いていると表示されています。表示されている 23 GB は、システムによってキャッシュとして使用されていますが、アプリケーションではまだすぐに使用できます。メモリが空いていると表示されるのもこのためですtop

見る翻訳元より詳しい説明については

答え2

参照してくださいこの質問正確な空きメモリを決定します。

  • デフォルトでは、リナックスがあります非常に効率的実行されているマシン上のキャッシュされたメモリを解放する必要があるメモリ管理プロセス。

  • しかし、キャッシュメモリリナックス時には、キャッシュメモリ使用されていて必要であるためにメモリ関連の問題を引き起こし、最終的には空きメモリを使い果たしてしまう可能性があります。これに対処するには、リナックス保存されたキャッシュメモリを解放します。

メモリをすぐに解放するには、次のようにします。

free && sync && echo 3 > /proc/sys/vm/drop_caches && free

編集済み: このコマンドを cronjob として実行することもできます。

として翻訳者指摘されているように、パフォーマンスのボトルネックを引き起こす可能性があるため、あまりお勧めできません。

関連情報