「AI用途のVPSは4GB以上がおすすめです」。よく見る書き方です。

その4GBの内訳がどこにも書いてありません。 OSがいくら使うのか、ツールがいくら足されるのか、どこに余裕を見ているのか。根拠が出てこないので、自分の用途に当てはめようがない。

このサイトでは、ここまで4本の記事で全部自分で測ってきました。 その数字を積み上げて、必要なスペックを出します。

先に結論

やりたいことメモリディスク根拠
静的サイト+小さな業務アプリ1〜2GB20GB〜実測(アプリ3本で166MB)
+ n8n で自動化2GB50GB〜実測(+402MB、空き1.1GB残)
+ Dify(起動して置くだけ)4GB100GB〜実測(Dify単体で2,076MB)
Dify を実際に使う8GB100GB〜推定・未検証
ローカルLLMを動かす8GB〜200GB〜未検証

上3行は測った数字です。下2行は測っていません。どこまでが実測でどこからが推測か、はっきり分けて書きます。

土台:OSと常駐デーモンで何MB持っていかれるか

まずアプリを何も載せない状態のコストです。ここを知らないと積み上げができません。

このサーバー(さくらのVPS 2Gプラン / Ubuntu 24.04)で、再起動直後・Dockerとnginxと自作アプリ1本が動いている状態398MB でした。

内訳のうち、多くの人が見落とすものが2つあります。

1. VPSでは働きようがないデーモンが50〜100MB

最初の記事で測った内訳です。

プロセスRSS本来の用途
fwupd44.0MB物理デバイスのファームウェア更新
multipathd26.7MBストレージへの複数I/Oパスの管理
udisksd13.4MBディスク・リムーバブルメディアの管理
ModemManager12.8MBモバイル通信モデムの管理

VPSに物理ファームウェアはありません。モバイル通信のモデムも刺さっていません。常駐3つで約53MB、fwupd が起動していると約97MB。

さらに 43時間の連続測定では、この fwupd が瞬間的に 188MB まで跳ねていました。自作アプリの最大値(87.9MB)の2倍以上です。

プランを上げる前に、まずここを見てください。

2. Docker を入れると 49MB が恒久的に乗る

コンテナを1本も動かしていない状態で、dockerdcontainerd が常駐します。

dockerd     49.4MB
containerd  50.6MB

RSSの合計は100MBですが、システム全体の増加として観測できたのは 約49MB でした(RSSは共有ライブラリを重複して数えるため、単純合計は実際の消費と一致しません)。

containerd の存在を忘れないでください。 dockerd とほぼ同じサイズがもう1本います。そして docker stop してもこの2つは消えません。Dockerを入れた時点で、恒久的に49MBです。

ツールごとの実測コスト

n8n:+402MB

実測記事の数字です。

段階増分
Dockerデーモン+38MB
n8nコンテナ起動+328MB
管理画面を開いてワークフロー1本+36MB
合計+402MB

正体は Node.jsのプロセス2本(305.6MB + 117.5MB)でした。アプリケーションが重いのではなく、ランタイムが2本立ち上がる構造です。

2GBプランで、載せてもまだ1.1GB空いていました。

Dify:+2,076MB

実測記事の数字です。桁が変わります。

立ち上がるコンテナ16本
物理メモリ上1,195MB
スワップ上881MB
合計2,076MB

n8nは1本、Difyは16本。api / worker / web / PostgreSQL / Redis / ベクトルDB / プラグイン基盤 …… が一式ついてきます。

そしてこの2,076MBは、ワークフロー0本・ナレッジ0件・アクセス0の、完全にアイドルの状態の数字です。

ここは注意して読んでください。 この測定では、Difyに与えたメモリ枠を1,200MBに絞っていました。そのため881MBがスワップへ押し出されています。枠を広げれば、スワップに落ちていた分が物理メモリに乗るだけで、合計の要求量はおおむね変わらないと考えられます。 ただしこれは推定です。 メモリを増やした環境での実測はこれからやります。

足し算してプランを決める

土台とツールを足すだけです。

n8n だけの場合
  土台 約400MB + n8n 402MB = 約800MB
  → 2GBプランで、まだ1.1GB余る(実測どおり)

Dify を入れる場合
  土台 約400MB + Dify 2,076MB = 約2,480MB
  → 2GBプランには入らない。4GBが最低ライン

2GBのマシンに2,076MBのものを載せようとすると何が起きるかは、実際にやりました。

  • スワップに881MB押し出され
  • CPUのI/O待ちが最大91%
  • ロードアベレージ5.72
  • SSHの接続が切れました
  • 通常は数秒で終わるデータベースのマイグレーションに約4分

起動してしまえば静止しますが(load 0.2 / CPUアイドル98%)、そこに至るまでの4分間、サーバーは事実上使えません。

「余裕」をどれくらい見るか

実測から言うと、OSのメンテナンス用に最低300MBは空けておくべきです。

43時間の記録で、メモリのピークを作っていたのは自作アプリではなく unattended-upgrades(Ubuntuの自動更新) でした。平常時400MBのところ、朝6時22分に641MBまで上がっていました。

しかもこの自動更新は、依存パッケージを更新してアプリを勝手に再起動します。 実際、記録の中で自作アプリのRSSが 72.0MB → 43.3MB に落ちた瞬間が残っていました。

空きギリギリで運用していると、深夜の自動更新でOOM Killerが走ります。 ここは削れません。

見落とされがち:先に埋まるのはディスク

メモリの話ばかりされますが、AI用途で先に効くのはディスクです。

イメージのサイズ
n8n2.47GB
Dify10.6GB

Difyの dify-api1本で4.06GB。n8nのイメージ全体より大きい。

さくらのVPS 2Gプランの標準SSDは50GBです。Ubuntuの基本構成で約10GB使うので、Difyを入れると残り約27GB。 ここにローカルLLMのモデルファイル(1つ数GB)を足していくと、メモリより先にディスクが苦しくなります。

私自身、測る前はこの順番を逆に考えていました。

なお、Docker 29系ではイメージの実体が /var/lib/containerd に置かれます。/var/lib/docker を見ても分かりません(実測すると5.9MBしかありませんでした)。内訳を見るなら docker system df を使ってください。

CPUはほとんど要りません

これは意外だと思います。プラン選びでCPUコア数を気にする必要は、ほぼありません。

43時間・2,590サンプルの実測です。

指標中央値最悪値
CPUアイドル率100%57%
ロードアベレージ(1分)0.021.21

Difyを16コンテナ動かしている定常状態でも、CPUアイドル98% / ロード0.2〜0.4 でした。

CPUが跳ねるのは起動時と、バッチ処理が走る間だけです。しかも43時間の記録では、バッチ処理はCPUを35%使ってもメモリは動きませんでした(データを1件ずつ処理する型なので、全部をメモリに載せない)。

「重い処理=メモリが要る」は、いつも成り立つわけではありません。

さくらのVPSはメモリを上げるとvCPUも一緒に増える構成なので、メモリで選べばCPUは自動的についてきます。 逆にCPU目当てで上位プランを選ぶ理由は、AI用途では薄いと考えています。

スワップは「足りないメモリの代わり」にはならない

Difyの実測で、はっきりしました。

スワップを2GB用意してあったので、2GBのマシンで2,076MBのDifyは起動しました。落ちもしませんでした。 しかしその代償が、I/O待ち91%とSSH切断です。

スワップは「緩衝材」であって「増設メモリ」ではありません。

一方で、緩衝材としては確実に効きます。43時間の記録で、メモリに1.3GB以上の余裕がある状態でもスワップは最大46MB使われていました。 長時間触られていないページが静かに退避されているだけで、逼迫していなくてもLinuxはこれをやります。

そしてさくらのVPSでは、スワップなしのイメージが提供される場合があります。 公式マニュアル「swapfileの追加」に「一部、スワップパーティションを含まないイメージの提供を行っております」と明記されており、追加手順も公式に用意されています。

私が確認した範囲では、運用中の4台すべてがスワップ0でした。契約したら最初に確認してください。

swapon --show     # 何も出なければスワップなし
free -h           # Swap: の行が 0B なら同じ

さくらのVPSのプラン対応

2026年9月時点の公式価格(税込・月額)と、上の積み上げを重ねたものです。

プランvCPUSSD月額この記事の用途で言うと
512MB120GB¥685静的サイト専用。ツールは載りません
1GB230GB¥972静的サイト+小さなアプリまで
2GB350GB¥1,706n8nで自動化するならここ(実測で1.1GB余る)
4GB4100GB¥3,888Difyを置くならここが最低ライン
8GB6200GB¥7,776Difyを実用する / ローカルLLM(未検証
16GB8400GB¥15,552

価格・仕様は変わります。申し込む前に公式の最新情報を確認してください。

迷ったら小さく始めてよい理由

さくらのVPSは、あとからプランを上げられます。

公式マニュアルの「スケールアップ」に条件が書かれています。

  • IPアドレスは変わりません(「プラン変更後も以前と同じIPアドレスをご利用いただけます」)
  • サーバーを停止して行います。その間サイトは落ちます
  • ディスク容量が減るプランへは変更できません。つまり下げられません
  • 課金は新プラン2か月分から、旧プランの未使用分を日割りで差し引き

IPが変わらないので、DNSもTLS証明書も設定し直す必要がありません。 ここは大きいです。

したがって、判断に迷ったら小さいプランから始めて構いません。 上げるのは簡単で、下げるのは(実質)できない。それが分かっていれば、最初に上位プランを掴む理由はありません。

「とりあえず4GB」より「2GBで測ってから決める」 ほうが、この構造には合っています。

測っていないこと

正直に書きます。この記事で未検証なのは3点です。

  1. メモリ4GB・8GBでの実測。 Difyがスワップなしで動いたとき、実際に何MBに落ち着くのか
  2. Difyを実際に使ったときのコスト。 上の2,076MBは完全にアイドルの数字です。ワークフローを組み、ナレッジを入れ、モデルを呼んだらどうなるかは測っていません
  3. ローカルLLM。 モデルファイルのサイズと推論時のメモリは、まったく測っていません

この3つを「たぶん8GBあれば大丈夫」で埋めるつもりはありません。 測ってから追記します。

まとめ

  • 土台(OS+常駐デーモン+Docker)で約400MB。うち50〜100MBはVPSでは働きようがないデーモン
  • n8nは+402MB。2GBプランで足りる(実測で1.1GB余る)
  • Difyは+2,076MB。2GBには入らない。4GBが最低ライン
  • 余裕は最低300MB。自動更新が朝6時に641MBまで上げる
  • ディスクのほうが先に埋まる。Difyのイメージだけで10.6GB
  • CPUはほとんど要らない。実測でアイドル率の中央値100%、Dify稼働中でも98%
  • スワップは緩衝材であって増設メモリではない。ただし無いと危ない
  • 迷ったら小さく始めてよい。あとからIPを変えずに上げられる

「何GB必要か」は、土台の実測値にツールの実測値を足すだけで出せます。この記事の数字はすべて自分のサーバーで測ったもので、測っていないものは測っていないと書きました。

次はメモリを増やした環境で同じ手順・同じ間隔で測り直します。 上の未検証3点を、推測ではなく数字で埋めます。


この記事で使った測定記事