キャッシュされたオブジェクトが巨大なRAMを使用しているために、システムのメモリが不足することがあります。その場合、システムの物理メモリを増やすか、スワップスペースを追加する必要があります。 /proc/sys/vm/drop_caches
に数値を追加して、システムのRAMメモリキャッシュをクリアするようにカーネルに指示することもできます。 ファイル。
Linuxシステムでメモリキャッシュをクリアすることは安全ですが、お勧めしません。 Linuxシステムでメモリキャッシュをクリアすると、メモリからのファイルの読み取りが永続ディスクよりもはるかに高速になるため、システムのパフォーマンスが低下します。キャッシュされたオブジェクトをメモリから破棄するため、ドロップされたオブジェクトを再作成するためにかなりの量のI/OとCPUが必要になる場合があります。このチュートリアルは、コマンドラインを介してLinux/Unixシステムのメモリキャッシュをクリアするのに役立ちます。
Linuxでメモリキャッシュをクリアする方法
Linuxでメモリキャッシュをクリアするために利用できる3つのオプションがあります。以下のオプションのいずれかを選択して、要件に応じてLinuxシステムのキャッシュメモリをフラッシュします。
- キャッシュメモリ内のPageCache、dentries、およびiノードをクリアします。つまり、すべてのメモリキャッシュをクリアします。
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
- キャッシュメモリ内のデントとiノードのみをクリアします
sync; echo 2 | sudo tee /proc/sys/vm/drop_caches
- キャッシュメモリ内のページキャッシュのみをクリアする
sync; echo 1 | sudo tee /proc/sys/vm/drop_caches
ここで最初のコマンドsync
すべてのメモリ内キャッシュファイルを永続ストレージに同期するために使用されます。次のコマンドは「;」で区切られます。最初のコマンドが完了すると、次のコマンドがトリガーされてキャッシュメモリがクリアされます。
Crontabを使用してメモリキャッシュのクリアをスケジュールする
コーンジョブをスケジュールして、定期的にキャッシュをクリアすることもできます。システムcrontabで次のスケジュールを設定して、定期的にキャッシュメモリを自動的にフラッシュします。
ターミナルを開き、「crontab -e」コマンドを実行して、crontabを編集します。
crontab -e
以下のエントリをファイルに追加します:
0 10 * * * sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
上記のcronは1時間ごとに実行され、システムのメモリキャッシュをフラッシュします。
本番サーバーでは、clearcacheコマンドをスケジュールすることはお勧めしません。データの破損やデータの損失につながる可能性があります。したがって、本番環境で上記のコマンドを実行する前に注意してください。
Linuxでキャッシュメモリを見つける方法
無料を使用する Linuxシステムによるキャッシュメモリの使用を確認するコマンド。 freeコマンドの出力は次のようになります
free -m
Output total used free shared buffers cached Mem: 16050 15908 142 0 12012953 -/+ buffers/cache: 834 15216 Swap: 0 0 0
最後の列は、Linuxシステムのキャッシュメモリ(12953 MB)を示しています。 -m オプションは、出力MBを表示するために使用されます。