VPSを使ってWebサイトやアプリを運用していると、「急にサイトが重くなった」「プロセスが落ちた」という経験をしたことはありませんか?
特に低価格プランのVPSではメモリ容量が限られているため、アクセス集中やバックグラウンド処理によってメモリ不足が発生しやすい傾向にあります。
このような場合に役立つのが スワップ領域 です。本記事では、仮想VPSサーバにスワップ領域を追加する方法と、そのメリット・注意点をわかりやすく解説します。
大手のレンタルサーバーでも初期時にスワップの設定がされていない事がありますので、参考になれば幸いです。
スワップ領域とは?
スワップ領域とは、メモリ不足が発生した際に ディスクを一時的なメモリ代替領域として利用する仕組み です。
- メリット
- 突発的なメモリ不足でもプロセスが強制終了しにくくなる
- サーバの安定稼働に寄与する
- デメリット
- ディスクはRAMよりも読み書き速度が遅いため、スワップに依存すると処理が重くなる
- SSD利用の場合、過度なスワップは寿命を縮める可能性がある
つまり、スワップ領域は「性能改善のため」ではなく、あくまで 安定性を高める保険 と考えるのが良いでしょう。
現在のスワップ状況を確認する
まず、サーバにすでにスワップ領域が存在しているかを確認しましょう。
# swapon --show
又は
# free
- 出力が空の場合はスワップ未設定
free
で「Swap」の欄に値が表示されればスワップが有効です
スワップ領域の追加手順
1. スワップファイルを作成
ここでは例として 2GB のスワップファイルを作成します。
# fallocate -l 2G /swapfile
# chmod 600 /swapfile
環境によっては
fallocate
が使えない場合があります。その際は以下のコマンドを利用します:
# dd if=/dev/zero of=/swapfile bs=1M count=2048
2. スワップとしてフォーマット
作成したファイルをスワップ領域に変換します。
# mkswap /swapfile
3. スワップを有効化
# swapon /swapfile
この時点で free
を実行すると、Swap の欄に新しく割り当てた領域が反映されているはずです。
4. 設定を永続化
サーバを再起動してもスワップが有効になるように、/etc/fstab
ファイルに下記を追記します。ファイルを編集する前にバックアップを取得します。
# cp -p /etc/fstab /etc/fstab.org
# vi /etc/fstab
/swapfile none swap sw 0 0
こちらの設定をした後に、サーバを再起動して、スワップ領域がマウントされているか確認しましょう。
スワップネス値の調整
スワップの使われやすさは swappiness というパラメータで制御できます。
現在の値を確認:
# cat /proc/sys/vm/swappiness
RedHatのマニュアルにはデフォルトは 60 に設定されていると記載がありますが、AlmaLinuxでは 30 になっていました。VPS環境では物理メモリを優先するため 10〜20 程度にするのが推奨らしいですが、個人的にはデフォルトのままでも良い気はしています。(根拠なしですが)
一時的な変更:
# sysctl vm.swappiness=10
永続的に設定するには /etc/sysctl.conf
に以下を追記します。
vm.swappiness=10
設定を反映させるには、sysctl -p コマンドを実行します。
注意点と運用のヒント
- スワップを大量に確保してもサーバが高速化するわけではない
- スワップ領域はあくまでメモリ不足時の保険
- SSD利用のVPSでは書き込みが増えると寿命が縮む可能性があるため、必要以上に依存しない
- メモリ不足が頻発するなら、スワップ追加よりもVPSプランのアップグレードを検討すべき
まとめ
- VPSではメモリ不足によるプロセス停止を防ぐためにスワップ領域が有効
- スワップは性能向上ではなく「安定稼働のための保険」として利用する
- 適切なサイズを確保し、swappiness を調整することでより快適な運用が可能
まずは 2GB 程度のスワップを追加し、サーバの動作を観察してみてください。
「急なメモリ不足でサービスが落ちる」そんなリスクを軽減でき、より安定したVPS運用が実現できるはずです。
今回はここまでです。最後までお読み頂きありがとうございました。