本文へスキップ
← ガイド一覧

メモリはどれくらい必要か (実際の使用量を測る)

プランや専用サーバーを選ぶときに最も迷いやすいのがメモリです。すでに使っているサーバーがあるなら、実際の使用量を測って決めるのが最も正確です。

1. サーバー全体の使用量を見る

free -h

usedよりも available を見てください。新しいプログラムが実際にさらに使える量です。buff/cacheはLinuxが一時的に借りて使い、必要になれば返却するメモリなので、心配する必要はありません。(各項目の意味は自分のサーバーのスペックを確認するを参照)

Windowsサーバーでは、タスク マネージャー(Ctrl + Shift + Esc)→ パフォーマンス → メモリで、使用中の量と利用可能な量を確認できます。

2. プログラムごとの使用量を見る

ps -eo pid,rss,comm --sort=-rss | head -n 11

メモリを多く使っている順に10個表示します。RSSがプログラムが実際に占めているメモリで、単位はKBです。(1,024が1MB、1,048,576が1GB)

Windowsサーバーでは、タスク マネージャーのプロセスタブでメモリ列の見出しをクリックすると、多く使っている順に並べ替えられます。

3. 最も多く使うときを基準に決めましょう

メモリは、接続者が最も多いときや、バックアップやアップデートが動いているときに最も多く使われます。一度測って終わりにするより、1日分記録しておくと最大値がわかります。

while true; do echo "$(date '+%F %T') $(free -m | awk '/^Mem/ {print "used=" $3 "MB available=" $7 "MB"}')"; sleep 60; done >> ~/mem.log

1分ごとに使用量を~/mem.logに書き込みます。Ctrl + Cで止められ、ウィンドウを閉じても記録を続けたい場合はscreen・tmuxの中で実行してください。記録が集まったら、余裕が最も少なかった瞬間を探してみます。

sort -t= -k3 -n ~/mem.log | head -n 3

そのときのavailableにも十分な余裕が残るスペックが適切です。正確な基準がわからない場合は、VPSのスペックの選び方 (用途別おすすめスペック)のように、1段階余裕をもって選ぶことをおすすめします。

4. 用途別にあわせて確認すること

  • マインクラフトJava版サーバー — サーバーのメモリは、ゲームに割り当てるメモリ(-Xmx)にOSの分を足した量が必要です。OSの分として、Linuxは1〜2GB、Windowsは2〜3GBを残してください。Javaは-Xmxで決めた量より少し多く使うため、サーバーのメモリぴったりに合わせてはいけません。(マインクラフトサーバーを作る (Java版、Paper・バニラ))
  • Windowsサーバー — OSが使うメモリがLinuxより多いため、同じプログラムでもメモリにより余裕が必要です。小さいプランではWindows Serverを選べない場合もあります。(料金プランに「Windows Server 非対応」と表示)
  • Discordボット — ほとんどの場合少ないメモリで十分なので、ボット1つなら最も小さいプランから始めても大丈夫です。音楽ボットのように重い処理をするなら、1段階上のプランを選んでください。
  • データベース — メモリに余裕があるほど、よく使うデータをメモリに載せて処理するため、速くなります。
  • 複数のプログラムを一緒に — プログラムごとに、最も多く使うときの使用量を足して計算してください。

5. メモリが足りないと起こること

Linuxはメモリが尽きると、プログラムを1つ強制終了します。プログラムが理由もなく終了した場合は、まずこれを確認してください。

sudo dmesg -T | grep -i -E "out of memory|killed process"

結果が表示された場合は、メモリ不足で終了したということです。

  • 当面は — スワップを追加すれば、遅くはなっても強制終了を減らせます。
  • 根本的には — メモリの大きいプランが必要です。利用中のサーバーのスペックは変更できないため、新しいサーバーを受け取って移行するか、大きなメモリが必要なら専用サーバーも比較してみてください。

解決しない問題がある場合は、Discordのチケットでお問い合わせください。