VPSのメモリは何GB必要か — 個人開発のアプリを46日動かして実際に測ってみた
はじめてVPSを借りるとき、プランの選び方で迷いませんか。個人開発のアプリ(Django + Next.js + PostgreSQL)を2GBプランで46日動かし、メモリの使用量を実際に測りました。用語の説明つきで、あなたが何GBを選べばいいかまで書きます。
本記事にはアフィリエイトリンクを含みます
作ったアプリを公開しようとサーバーを探すと、最初につまずくのがプラン選びです。
1GB 月 約700円
2GB 月 約1,000円
4GB 月 約2,000円
8GB 月 約4,000円
数字が並んでいるだけで、自分にどれが必要なのかが分からない。 私もそうでした。
安いプランで始めて足りなくなったら上げればいい、と考えて 2GB を選び、46日間動かしてみました。この記事は、そのとき実際に測った数字の記録です。
結論を先に書くと、足りなくなったのはメモリではありませんでした。正確には、足りなくなり方が想像と違いました。
そもそもVPSのプランは何が違うのか
VPS(仮想専用サーバー)のプランは、主に3つの数字で分かれています。
| 項目 | 何を決めるか |
|---|---|
| メモリ(RAM) | 同時に動かせるプログラムの量。ここが一番効く |
| CPU(コア数) | 処理の速さ。個人開発の規模ではあまり困らない |
| ディスク(SSD) | 保存できるデータの量。100GB前後が標準で、まず余る |
プラン名が「2GBプラン」のようにメモリで表記されているのは、そこが一番の違いだからです。
なので、判断すべきは実質「メモリはいくつ必要か」の一点になります。
何を動かしているか
私が公開しているのは、記事を配信するWebサイトです。次のプログラムが常に動いています。
| 動いているもの | 役割 |
|---|---|
| Next.js | 画面を表示する部分(フロントエンド) |
| Django | データを処理する部分(バックエンド) |
| PostgreSQL | データを保存するデータベース |
| nginx | 外からのアクセスを受け取って振り分ける窓口 |
| certbot | HTTPS(鍵マーク)の証明書を自動更新する |
| redis | よく使うデータを一時的に覚えておく |
これらは Docker のコンテナとして動かしています。
実測1:動かすだけなら、かなり余裕がある
実際に測った結果です。
| コンテナ | メモリ使用量 | 2GBに対する割合 |
|---|---|---|
| Next.js(フロントエンド) | 201.7 MiB | 10.26% |
| Django(バックエンド) | 75.6 MiB | 3.85% |
| certbot | 27.6 MiB | 1.40% |
| PostgreSQL | 12.7 MiB | 0.64% |
| nginx | 12.4 MiB | 0.63% |
| redis | 3.0 MiB | 0.15% |
| 合計 | 約 333 MiB | 約 17% |
6つ全部合わせて 333MiB。2GB に対して17%しか使っていません。
サーバーの忙しさも測りました。
$ uptime
10:05:58 up 46 days, 10:59, 1 user, load average: 0.34, 0.24, 0.20
46日間動かし続けて、0.34。 3コアに対してほとんど何もしていない状態です。
ここまでの数字だけを見れば、「2GB で十分だった」という結論になります。
実測2:ただし、スワップが294MB使われていた
次に、サーバー全体のメモリを見ます。
$ free -h
total used free shared buff/cache available
Mem: 1.9Gi 778Mi 139Mi 5.0Mi 1.2Gi 1.2Gi
Swap: 2.0Gi 294Mi 1.7Gi
たくさん数字がありますが、初めて見るときは available(実際に使える量) だけ見れば十分です。ここは 1.2Gi あるので、いま逼迫はしていません。
引っかかるのは最後の行です。
294MiB がスワップに逃がされていました。
そして、一度逃がされたものは自動では戻ってきません。 つまりこの294MiBは「過去のどこかで、メモリに載せきれない場面があった」という記録です。
常時動いているのが合計333MiBであることを考えると、これを押し出したのは普段の動作ではありません。一時的に大きくメモリを使った処理があったことになります。
心当たりは1つありました。
実測3:ディスクの8割がビルドキャッシュだった
Docker がディスクをどう使っているかを見て、原因の輪郭が見えました。
| 種類 | 個数 | サイズ |
|---|---|---|
| イメージ | 6 | 3.7 GB |
| コンテナ | 6 | 6 MB |
| ボリューム | 8 | 609 MB |
| ビルドキャッシュ | 357 | 28.9 GB |
ビルドキャッシュだけで 28.9GB。 ディスク使用量37GBの、およそ8割です。
私はコードを更新するたびに、本番サーバーの上で next build を実行していました。46日ぶんの更新で、357個のキャッシュが積み上がったわけです。
つまり、こういうことでした
2GBで「動かす」 → 余裕がある(合計333MiB、load 0.34、46日連続稼働)
2GBで「ビルドする」→ ここが詰まる(スワップ294MiB、キャッシュ28.9GB)
サイトが落ちたわけでも、表示が遅くなったわけでもありません。壊れるのではなく、更新のたびに余裕がじわじわ削られていくという形で出てきます。
プラン選びで見るべきなのは、動かすときのメモリではなく、ビルドするときのメモリでした。
では、あなたは何GBを選べばいいか
ここから先は実測ではなく、上の数字からの推定です。4GBで動かして比べたわけではないので、そこは区別して読んでください。
実測から確実に言えるのは2点だけです。
- 普段動かすだけなら 2GB で足りる(合計333MiB、load 0.34)
- ビルドのときに無理が出ている(スワップ294MiB)
そのうえで、選び方の手順としてはこうなります。
手順1:サーバーの上でビルドするかどうかを決める
ここが分岐点です。
| やり方 | 必要なメモリ |
|---|---|
| サーバーの上でビルドする(私のやり方) | 4GB以上を勧めます |
| ビルドは別の場所でやり、結果だけサーバーに置く | 2GBで足ります |
手順2:迷うなら 4GB から始める
はじめての公開なら、サーバー上でビルドする形になる可能性が高いです。手順がいちばん少なくて分かりやすいからです。
その場合、2GBと4GBの月額の差はおおむね1,000円前後(2026年8月時点)。足りなくて後から移行する手間(サーバーを立て直し、データを移し、DNSを切り替える)に比べれば、はじめから余裕を持つほうが安く済みます。
手順3:ディスクは気にしなくていい
100GB前後あれば、個人開発では余ります。私の場合、37GB使っているうちの28.9GBがビルドキャッシュで、これは1コマンドで消せます。
もう1つの選択肢:ビルドをサーバーから外す
プランを上げるほかに、ビルド自体をサーバーの外に出す方法があります。
このサイト(prodnote.dev)は、その形で作りました。記事を書いて GitHub に置くと、外部のサービスがビルドと配信をやってくれます。サーバーのメモリを1バイトも使いません。
ただし、この方法が使えるのはデータベースを持たないサイトに限られます。ログイン機能や投稿機能があるアプリでは使えません。
まとめ
- 2GBで動かすこと自体は問題なかった。 6つ合わせて333MiB、46日連続稼働、load 0.34
- 限界はビルドに出た。 スワップ294MiB、ビルドキャッシュ28.9GB(ディスクの8割)
- 判断すべきは「動かすときのメモリ」ではなく「ビルドするときのメモリ」
- サーバー上でビルドするなら4GB以上、しないなら2GBで足りる
次にやること
はじめて借りるなら、次の順で進めれば迷いません。
- サーバー上でビルドするかを決める(迷うなら「する」で考えて 4GB)
- プランを契約する(月額の差より、移行の手間のほうが高くつきます)
- 借りたらすぐ、セキュリティの初期設定をする ← ここを飛ばさないでください
3番目が特に大事です。VPSは借りた瞬間から、インターネットに公開された状態になります。 レンタルサーバーと違い、OSの設定は自分で面倒を見る必要があります。
私の場合、公開してしばらく経ってから、rootでのログインを禁止し、パスワードではなく鍵でログインする形に変更しました。最初にやっておくべきだったというのが正直なところです。この手順は別の記事にまとめる予定です。