「重い」の原因は、サーバー処理(TPS低下)・通信ラグ・クライアント描画の3種類に分かれます。先に切り分けないと、対処が空振りします。
計測には無料MODのsparkを使い、/spark tps と /spark profiler で原因をMOD名や処理名として特定します。対処は、不要MODの削減→エンティティ対策→メモリ割当→Aikar’s flagsの順に行います。全部やってもMSPTが常時50msを超えるならスペック不足なので、そこで初めて増強を検討します。
重さの原因は3種類あり、対処法が違う
サーバーが重いとき、「スペックを上げれば直る」と考える人が多いです。 原因がクライアント側や通信にある場合、サーバーを増強しても改善しません。 反対に、サーバー処理が原因なら、クライアントの軽量化MODは効きません。
この記事では、計測して原因を特定してから、無料でできる順に対処します。 スペック増強は最後の手段で、必要になる判断基準も示します。
STEP1: どこが重いのかを切り分ける
症状を見れば、どこが重いかをほぼ絞り込めます。
| 症状 | 誰に起きるか | 疑う場所 |
|---|---|---|
| モブがワープする・作物や装置が遅い・時間の進みがおかしい | 全員に同時に起きる | サーバー処理(TPS低下) |
| 壊したブロックが戻る・攻撃が当たらない・視点移動は滑らか | 特定の人だけ、または回線が遠い人 | 通信ラグ(ping) |
| 画面のコマ落ち(FPS低下)。シングルプレイでも重い | 自分だけ | クライアント描画 |
- TPS = サーバーが1秒間に処理する回数。上限は20で、20を下回ると世界全体がスローになります
- MSPT = 1回の処理にかかったミリ秒。50ms以下なら健全です(50ms×20回=1秒)
クライアント描画が原因なら、サーバー側の対処は不要です。 各自のPCで、軽量化MOD(Sodium系。Forge 1.20.1ならEmbeddium等)の導入、描画距離の短縮、影MODの設定緩和を行います。 以降はサーバー処理(TPS低下)の解決に絞ります。
STEP2: sparkで計測する
sparkは無料のパフォーマンス計測MODです。
CurseForgeまたはModrinthからForge版(Fabric版もあり)を入手し、サーバーの mods フォルダに入れて再起動すると使えます。
まず現状を確認します。OP権限でコンソールかチャットから実行します。
/spark tps
直近のTPSとMSPTが表示されます。 TPSが常時20付近でMSPTが50ms以下なら、サーバー処理は健全です。重さの原因は通信かクライアント側にあります。
TPSが落ちているなら、プロファイラで何が時間を使っているかを計測します。
/spark profiler start --timeout 300
5分間計測して自動停止し、結果ページのURLがチャットに出ます。
手動で止めるなら /spark profiler stop です(コマンド仕様の出典: spark公式ドキュメント)。
STEP3: 結果の見方
結果ページには、サーバーの処理内容が時間割合(%)のツリーで表示されます。 上から展開していき、割合の大きい枝の名前を見ます。
Entity系が太い → モブやアイテムの処理が多すぎます。特定MODのエンティティ名が出ていれば、そのMODが原因ですBlockEntity/TileEntity系が太い → ホッパーや機械類の設置が多すぎます- 特定MODのパッケージ名(例:
com.example.somemod.*)が太い → そのMODが直接の原因です ServerChunkProvider等のチャンク生成系が太い → 探索や地形生成MODの負荷です
あわせて /spark health を実行すると、TPS・メモリ使用量・GC(メモリ掃除処理)の頻度が一覧で出ます。
GCが数秒おきに走っている場合は、メモリ不足のサインです。
STEP4: 対処する(効果とコストの順)
1. 使っていないMODを抜く(無料・効果大)
プロファイラの上位に出たMODと、入れたけれど誰も使っていないMODを減らします。
ワールドをバックアップしてから数個ずつ抜き、/spark tps で再計測します。
地形生成系と常時スキャン系(サーバー側マップMOD等)は、特に負荷が大きいです。
2. エンティティを減らす(無料・効果大)
TPS低下の代表的な原因は、エンティティの過密です。
- 放置ファームやトラップに溜まったモブを処理する(溜めすぎない設計に変更)
- 床に散乱したドロップアイテムを回収・削除する
- ホッパーの長い連結を減らす(コンテナ系MODや水流輸送で代替)
- 村人の過密繁殖、額縁やアーマースタンドの大量設置を見直す
3. メモリ割当を見直す(無料・条件次第)
/spark health でGCの連発や使用量の張り付きが見えたら、メモリ不足です。
割当の目安と設定方法はMODサーバーのメモリ目安へ。
割当が多すぎる場合も、適正化するとGC1回あたりの停止時間が短くなります。
4. Aikar’s flagsを設定する(無料・GCスパイク対策)
Aikar’s flagsは、GCによる定期的なカクつきを抑えるJava起動引数のセットです。コミュニティの実質標準になっています(出典: PaperMC公式ドキュメント)。
Forgeなら user_jvm_args.txt に次を貼り付けます(-Xms/-Xmxは自分の割当に変更)。
-Xms6G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions
-XX:+DisableExplicitGC -XX:+AlwaysPreTouch
-XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40
-XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20
-XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4
-XX:InitiatingHeapOccupancyPercent=15
-XX:G1MixedGCLiveThresholdPercent=90
-XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32
-XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1
Aikar’s flagsが効くのは、GCが原因のスパイクだけです。 プロファイラでMODの処理が重いと出た場合は、根本の解決になりません。
STEP5: 再計測とスペック不足の判断
対処のたびに /spark tps で再計測し、効果を数字で確認します。
次の条件に当てはまるなら、サーバーの性能の限界と判断できます。
- 不要MODの削減とエンティティ対策の後も、少人数でMSPTが常時50msを超える
- プロファイラの上位が特定のMODではなく、処理全体が満遍なく重い
- メモリを増やしたくても、物理メモリにもう余裕がない
- CPU使用率で1コアだけが常に張り付いている。Minecraftはコア数より1コアの速さが効きます
限界と判断したら、選択肢は2つです。
- MOD構成を削る。費用はかかりません。遊び方を変えられるなら、これで足ります
- サーバーの性能を上げる。今のMOD構成のまま遊びたい場合の方法です。自宅PCなら上位のVPSへ、VPSなら上位プランへ移ります
必要なスペックはMODサーバーのメモリ目安とPixelmonサーバーに必要なスペックを、移行先の選び方はマイクラ向けVPS比較を参考にしてください。
Official site
対処してもTPSが戻らない=スペック不足と判断できたら、8GB/16GB帯へ
【ConoHa for GAME】マルチプレイがかんたんにすぐ遊べるゲームサーバープラン変更に対応(2026-08-29時点・公式サイト)
対処後の /spark tps でTPSが20に張り付き、ワープしていたモブが滑らかに歩き出せば解決です。
その状態を24時間維持する構成づくりは、下の関連記事にまとめています。
次に読む:
- MODサーバーのメモリは何GB必要?
- Forgeサーバーの立て方【1.20.1対応】
- マイクラ向けVPS比較
- 重いのはPCとサーバーどっち?切り分け手順
- サーバーのモブ数を制御する設定(モブキャップ・シミュレーション距離)
- 自力で解決しないときの相談先まとめ
sparkを含む運営向けMODの一覧はサーバー運営者向けの便利MOD12選を参照してください。
sparkのコマンドと結果画面の読み方はsparkの使い方で1つずつ解説しています。