Ubuntuには、Linuxカーネルによるメモリ管理があります。このため、メモリ解放を手動で行うことは通常必要ありません。しかし、以下のような場合には、手動でメモリ解放を行うことが望ましい場合があります。
またUbuntuをサーバーとして運用しているとどうしてもメモリーが不足になる上にキャッシュが以上に重くなる。そうするとサイト事態のロードがそもそも負荷になり読み込みが失敗する。そうした問題点を解決してみよう。その中でメモリ解放を最適に行うことで不要なキャッシュを削除するとともにメモリのゴミを破棄できます。具体的なコマンドと最後に実際に運用に使うコマンドとスクリプトを記載しておく。
- メモリ不足による動作の遅さ Ubuntuで動作するアプリケーションが多数ある場合、メモリ不足によってシステムの動作が遅くなることがあります。この場合、
free
コマンドやhtop
などのツールを使用して、現在のメモリ使用量を確認し、不要なプロセスを終了することでメモリを解放することができます。 - システムの安定性を向上させるために 長時間稼働しているサーバーシステムでは、メモリリークやアプリケーションの不具合によりメモリ使用量が増加し、最終的にはシステムがクラッシュする可能性があります。このような場合、
cron
ジョブを使用して定期的にメモリ解放を行うことが推奨されます。
最適なUbuntuメモリ運用を行うには、以下の点に留意することが重要です。
- スワップ領域の設定 スワップ領域は、物理的なメモリが不足した場合に、ディスク上の仮想的なメモリを使用する機能です。スワップ領域を設定することで、物理的なメモリが不足しても、システムがクラッシュすることを防ぐことができます。
- プロセスの管理 Ubuntuでは、複数のアプリケーションが同時に実行されることがよくあります。このため、各アプリケーションが必要とする最小限のメモリ量を把握し、各アプリケーションに適切なメモリを割り当てることが重要です。
- システムリソースのモニタリング Ubuntuには、システムのリソース使用状況を監視するための多数のツールがあります。システムの使用状況を監視し、必要に応じてメモリの解放や最適化を行うことが重要です。
コマンド一覧
メモリの状況を確認する
free #これだけ
このコマンドを使用して、メモリと使用状況を確認できます スワップ 数行を使用してシステム内で。 コマンドにオプションを書き込まずに、 表示される出力はキロバイト単位で印刷されます.
良い選択肢は -hオプションを使用します 空きコマンドでメモリを表示してスワップインする 3桁のフォーマット、可能な限り近い
free -h
行上 ‘メモリ‘コマンドが表示する出力から、システムのRAMに関する情報を確認できます。 合計列 RAMのGB単位で合計が表示されます。 以下に示す列は、システムが使用しているRAMと使用可能なサイズを示しています。
メモリ使用状況をリアルタイムで確認する
free -m
top #全体のプロセス
メモリ解放
sudo sync
sudo sysctl -w vm.drop_caches=3
sudo sync
実際のコマンドは上記になる。注意点としては、まだディスクに保存されていないRAMメモリに存在する情報が失われる可能性があります。これは、ただ、メモリを解放すればいいということではないですね。
まとめ
メモリとはメモ帳のようなものです。実際にノートにまとめたデータはハードディスクに保存されるわけです。メモが大量にある状態では結局何が重要かわからない、全部のメモを見ることになるわけです。現実にも同じ状況に置き換えるととても不便ですよね。重要なことや確定したことはHDDにまとめて不要なメモは破棄する。これは正しい在り方ですね。
さて、メモリ解放を自動化したいと思います。
#!/bin/bash
# Note, I'm using "echo 1", because using "echo 3" is not recommended in production.
echo 1 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'RAM-cache and Swap were cleared.'
上記をスクリプトにして保存します。
sudo vim clear_memory_cache.sh
次にCronという自動でスクリプトを実行させます。
sudo crontab -e
Cronの設定画面が出たら以下の自動設定を貼り付けます。
0 3 * * * bash ~/clear_memory_cache.sh
こちらの設定では、実行するためのファイルパスなどは実際の環境に合わせて変更してください。
また権限の設定が不足すると正常に実行しません。
sudo chmod 755 clear_memory_cache.sh
おすすめの権限は上記になります。
コメント