VPSのメモリ不足を解消!swapチューニングでOOMを防ぐ負荷対策ガイド

VPSのメモリ不足によるOOMや負荷を防ぐためのswapチューニング方法を解説。適切なサイズ設定やswappiness調整で安定稼働を実現します。

VPS負荷対策メモリswapチューニングOOM2026/5/25

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容量が大きいため、以下の基準が推奨されます。

  • RAM 2GB未満:RAMの2倍
  • RAM 2GB〜8GB:RAMと同程度
  • RAM 8GB以上:RAMの半分〜4GB程度
  • ただし、実際の使用状況に応じて調整してください。例えば、メモリを多く消費するアプリケーション(データベース、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の値

  • メモリに余裕がある場合:10〜30に設定。スワップを最小限に抑え、パフォーマンスを優先。
  • メモリが逼迫しやすい場合:60〜80に設定。積極的にスワップしてOOMを回避。
  • SSD搭載VPSの場合:60程度でも良いが、スワップ頻度が高いとSSDの寿命に影響するため、30前後が推奨。
  • swappinessの変更方法

    一時的に変更:

    sudo sysctl vm.swappiness=30
    

    永続的に変更:

    echo 'vm.swappiness=30' | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    

    OOM Killerを回避するその他の対策

    メモリ使用量の監視とプロセス管理

    htoptopでメモリを多く使うプロセスを定期的に確認し、不要なサービスを停止します。

    sudo apt install htop -y
    htop
    

    アプリケーションのメモリ制限

  • Apache/NGINX: ワーカープロセス数の調整
  • MySQL/MariaDB: innodb_buffer_pool_sizeを適切に設定
  • PHP-FPM: pm.max_childrenをメモリに合わせて調整
  • スワップの優先度を上げる(複数swapがある場合)

    複数のswapデバイスを使う場合、swapon -pで優先度を設定できます。


    *この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*

    まとめ

    VPSのメモリ不足対策として、swapのサイズとswappinessのチューニングは効果的です。特にOOM Killerによる強制終了を防ぐには、適切なswapサイズの確保とswappinessの調整が重要です。また、アプリケーション自体のメモリ使用量を最適化することで、より安定した運用が可能になります。

    定期的にメモリ使用状況を監視し、必要に応じて設定を見直しましょう。