クラウドやVPS環境でOSがインストールされているインスタンスを利用する場合SWAP領域が無効になっている場合がある、無効になっているなら有効にすればよい。スワップがない点はリスクです。メモリを大量に使う処理(DB、大量のPHPプロセスなど)が走るとクラッシュする可能性があります。
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
🌱 メモリについて 初級~中級者向け(日本語)
1. さくらのナレッジ
2. Qiita
3. Zenn
🧠 メモリの役割とは?
1. メインメモリ(RAM)
- コンピュータの「作業机」にたとえられます。
- OSやアプリケーションが実行時にデータを一時的に置いておく領域です。
- 高速にアクセスできる反面、容量は限られている(例:4GB、8GBなど)。
2. 用途別分類
種類 | 説明 |
---|
Used | OSやアプリが使用中のメモリ。 |
Free | 何にも使われていない領域(Linuxでは意外と少ない)。 |
Buffer / Cache | ファイルやディスクアクセスを高速化するための一時的なキャッシュ。OSが賢く使ってくれる。 |
Shared | 複数プロセスで共有して使うメモリ(tmpfs等)。 |
Available | アプリが使えると見なせる実質の空き(free + 解放可能なcache/buffer)。 |
💾 SWAP(スワップ)とは?
1. 役割
- RAMが足りなくなったときに、一時的にディスクに退避する領域。
- RAMよりはるかに遅いが、メモリ不足によるクラッシュを防ぐ保険的な役割。
- Linuxでは、
/swapfile
やパーティションとして設定される。
2. SWAPの使われ方(例)
- アイドル状態のプロセス(例えば長時間使ってないCLIエディタなど)がスワップに移され、アクティブなアプリにRAMを優先配分。
- メモリフル時に、OOM Killer(プロセス強制終了)を回避する。
3. メリット・デメリット
項目 | メリット | デメリット |
---|
SWAPあり | メモリ不足時でもシステムが継続 | アクセスが遅くなる(ディスクI/O) |
SWAPなし | 遅延がない(高速) | メモリ不足時に落ちる(OOM) |
🧮 SWAPのサイズの目安
RAM容量 | 推奨スワップサイズ |
---|
~2GB | 2倍程度(最大4GB) |
4GB | 同等または1.5倍 |
8GB以上 | 同等以下でも可(軽めの用途なら0でもOK) |
SSD使用時 | 小さめ推奨(I/O劣化を避ける) |
※ ただし最近のサーバでは、**「メモリが十分あるならSWAPは最小 or 0」**という考え方も増えています。
🔍 SWAPの状態を確認するコマンド
bashコピーする編集するfree -h # スワップ使用状況をMB/GB単位で確認
swapon -s # 現在のスワップの詳細
cat /proc/swaps # スワップの実態(ファイル or パーティション)
⚙️ SWAPを設定・無効化する方法
1. スワップファイルの作成(例:1GB)
bashコピーする編集するsudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
起動時に有効化:
bashコピーする編集するecho '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
2. スワップを一時的に無効化
bashコピーする編集するsudo swapoff -a
3. 完全削除する場合
bashコピーする編集するsudo rm /swapfile
# /etc/fstab から swapfile の行も削除
⚖️ どんなときにSWAPが必要か?
状況 | SWAPの必要性 |
---|
メモリが少ないサーバ(1〜4GB) | 必要(クラッシュ回避) |
Webサーバなどで短期的に負荷が上下する | あった方がよい |
コンテナ(Dockerなど) | できればスワップ制限も設定 |
デスクトップ用途(Ubuntuなど) | 通常はスワップあり |
RAMが潤沢(16GB以上)で用途も軽い | SWAPなしでも可 |
🧪 SWAPの挙動を調整する:swappiness
bashコピーする編集するcat /proc/sys/vm/swappiness
- デフォルトは 60(0〜100)。
- 数値が高いと「すぐスワップ」、低いと「RAM優先」。
- 例:軽量サーバでは 10〜20 にすることも。
bashコピーする編集するsudo sysctl vm.swappiness=10
🔚 まとめ
用語 | 意味 |
---|
RAM | 作業中のデータを高速に処理する領域(高価・高速) |
SWAP | RAM不足時の避難先(安価・遅い) |
swappiness | スワップ使用の積極性を調整するパラメータ |
OOM | メモリ不足でプロセスが強制終了する現象 |