VPSのメモリ不足を解消!swapチューニングでOOMを防ぐ負荷対策ガイド
VPSのメモリ不足によるOOMや負荷を防ぐためのswapチューニング方法を解説。適切なサイズ設定やswappiness調整で安定稼働を実現します。
VPSのメモリ不足とOOMのリスク
VPS(Virtual Private Server)は、限られたリソースを共有する環境であるため、メモリ不足が発生しやすいです。特にメモリが枯渇すると、OOM Killer(Out Of Memory Killer)が起動し、重要なプロセスが強制終了されるリスクがあります。この記事では、swapを適切にチューニングしてメモリ不足を緩和し、負荷対策を行う方法を解説します。
まずは現在のメモリとswap状況を確認
以下のコマンドで現在のメモリ使用量とswapの状態を確認します。
free -h
出力例:
total used free shared buff/cache available
Mem: 1.9G 1.2G 200M 50M 500M 500M
Swap: 2.0G 100M 1.9G
ここでSwapのtotalが0だったり、usedが高い場合はチューニングが必要です。
swapのサイズを適切に設定する
適切なswapサイズの目安
従来は「RAMの2倍」と言われていましたが、現在のVPSではRAM容量が大きいため、以下の基準が推奨されます。
ただし、実際の使用状況に応じて調整してください。例えば、メモリを多く消費するアプリケーション(データベース、Javaアプリなど)を動かす場合は、多めに設定すると安全です。
swapファイルの作成手順
swap領域はパーティションでもファイルでも構いませんが、VPSではファイルが簡単です。以下は4GBのswapファイルを作成する例です。
<h1>1. スワップファイルを作成(例:/swapfile)</h1>
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
<h1>2. パーミッションを設定(rootのみ読み書き可)</h1>
sudo chmod 600 /swapfile
<h1>3. スワップ領域としてフォーマット</h1>
sudo mkswap /swapfile
<h1>4. スワップを有効化</h1>
sudo swapon /swapfile
<h1>5. 自動マウント設定(/etc/fstabに追記)</h1>
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
countの値はMB単位で指定します。例えば2GBなら2048、8GBなら8192です。
swappinessパラメータのチューニング
swappinessはカーネルがどれだけ積極的にswapを使うかを制御する値(0〜100)です。デフォルトは60で、数値が大きいほどswapを使いやすくなります。
適切なswappinessの値
swappinessの変更方法
一時的に変更:
sudo sysctl vm.swappiness=30
永続的に変更:
echo 'vm.swappiness=30' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
OOM Killerを回避するその他の対策
メモリ使用量の監視とプロセス管理
htopやtopでメモリを多く使うプロセスを定期的に確認し、不要なサービスを停止します。
sudo apt install htop -y
htop
アプリケーションのメモリ制限
innodb_buffer_pool_sizeを適切に設定pm.max_childrenをメモリに合わせて調整スワップの優先度を上げる(複数swapがある場合)
複数のswapデバイスを使う場合、swapon -pで優先度を設定できます。
*この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*
まとめ
VPSのメモリ不足対策として、swapのサイズとswappinessのチューニングは効果的です。特にOOM Killerによる強制終了を防ぐには、適切なswapサイズの確保とswappinessの調整が重要です。また、アプリケーション自体のメモリ使用量を最適化することで、より安定した運用が可能になります。
定期的にメモリ使用状況を監視し、必要に応じて設定を見直しましょう。