マイクラのサーバーが重い時の原因の切り分け|メモリ・MOD・描画距離の順に確かめる

この記事のまとめ

  • 重いと感じたら、設定をいじる前に spark の /spark health や /spark tps で、サーバー側が遅いのかを測る。spark の資料では、1ティックが50ミリ秒を超えるとサーバーは追いつこうとし始める(遅れ始める)。
  • メモリは、Paper の資料によると、使用量が多いだけなら想定内で、OutOfMemory のクラッシュやガベージコレクション(GC)の時間が長いときに見直す。
  • プラグインは、Paper の資料にあるとおり、フォルダの名前を変えて全部止めて確かめ、原因がありそうなら2つの組に分けて片方ずつ止めて絞る。ログのスタックトレースに出る名前も手がかりになる。
  • 描画距離は、Paper で view-distance と simulation-distance の既定が10(範囲3〜32)、統合版では view-distance が32、tick-distance が4(範囲4〜12)。統合版の資料は、値が高いほど性能に影響すると書いている。
  • 順番は、測る、メモリ、MOD、描画距離、それでも足りなければプランを上げる、とする。

マイクラのサーバーが重いときは、設定を変える前に「サーバーが本当に遅れているか」を測り、そのあとでメモリ、MOD(プラグイン)、描画距離の順に確かめるのが筋道になる。順番を決める理由は、1か所ずつ変えて結果を見ないと、どの変更が効いたのか分からなくなるから。この記事は、Java版の Paper を主に、統合版(Bedrock)の専用サーバーも一部扱う。

この記事は、Paper・spark・Microsoft Learn の公式資料で確かめた内容をまとめたもの。実際にサーバーを借りて試した記録ではなく、資料にもとづく整理である。確かめた日は 2026-11-07 で、バージョンが変わると既定値は変わる。サーバーの立て方は マイクラ Java版のマルチサーバーの立て方 と 統合版のサーバーの立て方 に書いた。

手順1:まず「どの重さか」を測る

「重い」には種類がある。ブロックを壊しても戻される、モブの動きがぎこちないといった症状は、サーバーの処理が遅れている疑いがある。画面のカクつきが自分のパソコンだけに出るなら、サーバーとは別の話になる。ここで扱うのは前者。

測る道具として、Paper には spark というプロファイラ(処理の重さを調べる仕組み)が組み込まれている。Paper の資料は、性能問題の原因を調べるために入っていると説明している。spark の資料にあるコマンドは次のとおり。

コマンド 内容(spark の資料)
/spark tps サーバーの TPS(1秒あたりのティック数)と CPU 使用率を出す
/spark health TPS、CPU、メモリ、ディスク使用量を含む状態のレポートを出す
/spark profiler start プロファイラを始める
/spark profiler stop プロファイラを止めて結果を見る
/spark gc GC(ガベージコレクション)の履歴を出す

spark の「Finding lag spikes」のページは、1ティックが50ミリ秒を超えたところを、サーバーが追いつこうとし始める(遅れ始める)点だと説明している。1秒(1000ミリ秒)を50ミリ秒で割ると20になり、1秒あたり20ティックがこの境目にあたる計算になる(この20という数字は、このページには書かれていない)。1ティックの時間が50ミリ秒を超え続けるなら、サーバー側の処理が遅れている疑いが強い。

たまにだけ固まる場合は、同じページの手順が使える。/spark tickmonitor で長いティックを見張る(/spark tickmonitor --threshold-tick 50 とすると、50ミリ秒を超えたティックを知らせる)。チャットに出る通知と、ゲーム内でそのとき起きていたこと(誰かが大きな機械を動かした、など)を照らし合わせる。そのうえで /spark profiler --only-ticks-over <ミリ秒> で、指定した時間より長いティックだけを集めて調べる。値は50〜100の間で、遅いティックの時間より小さくするよう資料は勧めている。普通に集めると平均されて遅れが目立たなくなるため、というのが資料の理由。

手順2:メモリを確かめる

Paper の資料は、OutOfMemory のクラッシュや、GC の時間が長いといった問題がなければ、メモリの使用量が多いのは想定内だと書いている。使用量が高いこと自体は、不足の証拠にならない。見るのは次の2点。

メモリの割り当ては、起動コマンドの -Xms(初期値)と -Xmx(最大値)で決める。書き方の例は Java版の記事 にある。足りないと分かったときの注意を、Paper の Aikar’s Flags のページから3つ。

つまり、足りないなら増やす、足りているなら増やさない、という切り分けになる。プランのメモリ自体が小さいときは、割り当てを減らす方向ではなく、プランを上げる判断になる。必要なメモリの目安は Java版の記事 に事業者の数字をまとめた。

手順3:MOD・プラグインを切り分ける

メモリに問題がなければ、次はMOD(Paper ではプラグイン)を疑う。Paper の資料に書かれた方法は次のとおり。

  1. ログのエラー(スタックトレース)にプラグインの名前があれば、多くの場合そのプラグインが原因で、まずそのプラグインの更新を確かめる
  2. 見つからなければ、plugins フォルダの名前を別の名前(例:plugins-disabled)に変えて、全部を無効にして起動する。それで直れば、原因はプラグインにある
  3. どれかを絞るときは、プラグインを2つの組に分ける(互いに頼り合うプラグインは同じ組に入れる)。片方の組を無効にして(ファイルの拡張子を .jar から .jar-disabled などに変える)起動し、直れば無効にした組、直らなければ動いている組に原因がある。原因のある組で同じことを繰り返す(二分探索)

また、Paper の資料は、組み込みの spark を性能問題の原因を調べるためのものとしている。/spark profiler start で始め、/spark profiler stop で止めて結果を見る。

公式の資料で確かめられたのは、Paper のプラグインの切り分けまで。Fabric や Forge のMODについて、重くなる原因の一覧や、MODごとの負荷を示した公式資料は、今回は確かめられなかった。MODを入れたサーバーでも、「全部外して軽くなるか、半分ずつ戻して絞る」という進め方は同じように使える。ただし、これは資料に書かれた手順ではなく、Paper の手順を応用した進め方である。

手順4:描画距離を下げる

メモリとMODに問題がなければ、距離の設定を見る。距離の設定は、サーバーがクライアントに送るチャンク(ワールドの区画)の範囲や、サーバーが動かす範囲を決める。Paper の server.properties の資料には、次の2つがある。

項目 既定値 範囲 内容(Paper の資料)
view-distance 10 3〜32 サーバーがクライアントに送るワールドデータの量。プレイヤーの各方向へのチャンク数(直径ではなく半径)
simulation-distance 10 3〜32 生き物(エンティティ)をサーバーが更新する、プレイヤーからの最大距離。範囲外は更新されず、プレイヤーにも見えない

Paper の spigot.yml では、この2つを世界ごとに上書きできる。-1 か default にすると server.properties の値が使われる。

さらに細かく絞るなら、spigot.yml の entity-activation-range(プレイヤーからのブロック数で、この距離の外にいるエンティティの更新の頻度が下がる)がある。既定値は animals 32、monsters 32、raiders 64、misc 16、water 16、villagers 32、flying-monsters 32。mob-spawn-range の既定値は8(チャンク)。こうした値は、むやみに触らず、手順1の測定で原因が距離にあると分かってから、1つずつ変える。

統合版の専用サーバーでは、Microsoft Learn の server.properties の資料に、次の項目がある。

項目 既定値 範囲・内容(Microsoft Learn)
view-distance 32 許可する描画距離の最大(チャンク数)。5以上の整数で、高いほど性能に影響する
tick-distance 4 プレイヤーから何チャンク先まで世界を動かすか。4〜12の整数で、高いほど性能に影響する
max-players 10 最大人数。高い値は性能に影響する
max-threads 8 サーバーが使うスレッドの最大数。0 にするか項目を消すと、使えるだけ使う

統合版の view-distance は、資料では「許可する描画距離の最大」と説明されている。Java版と数字の意味が違うので、同じ感覚で比べない。

どれだけ下げればよいかの目安は、今回確かめた資料にはない。少しずつ下げ、そのたびに /spark tps で測って比べる。view-distance を下げると遠くの景色の見え方が変わるので、一緒に遊ぶ人に伝えてから変える。

順番のまとめ

順 確かめること 見るもの 変えるもの
1 サーバー側が遅れているか /spark health、/spark tps まだ変えない
2 メモリ OutOfMemory の有無、/spark gc -Xmx、-Xms、プラン
3 MOD・プラグイン ログ、/spark profiler 全部止める、2組に分けて片方ずつ止める
4 描画距離 距離の設定を下げたあとの TPS view-distance、simulation-distance、統合版は tick-distance
5 それでも足りない 上の結果 VPS のプランを上げる

自分でできること・事業者に確かめること

自分でできること:

事業者に確かめること:

次にすること

  1. /spark health を取り、サーバーが遅れているかと、メモリと GC の様子を見る
  2. メモリが足りているなら、MOD・プラグインを外して軽くなるか試す
  3. 原因が見つからなければ、view-distance などを段階的に下げて測り直す
  4. 設定が決まらないときは、Java版のサーバーの立て方 でメモリとポートの基本を、統合版のサーバーの立て方 で統合版の設定を見直す

出典(確かめた日)