【PR】本記事にはプロモーション(広告)が含まれます。広告リンク経由でお申し込みがあった場合、当サイトが報酬を受け取ることがあります。検証結果や評価の内容は広告の有無で変えていません。詳しくは広告表記をご覧ください。
マイクラサーバーが重い原因は?view-distance と simulation-distance を変えて5人接続で実測
マイクラのサーバーが重い(TPS が下がる、ラグがある)と感じたときに、まず見直したい設定が view-distance(プレイヤーに送る範囲)と simulation-distance(生き物や作物などを動かす範囲)です。当サイトの検証機で、この2つを変えたときの違いを測りました。
先に結論(今回の条件での実測)
- 5人が走り回って地形を広げる条件では、10/10 から 6/6 や 10/4 に下げると、tick の P99(遅い方から1%の tick)の最大が 79.3ms → 約38ms に下がりました。
- 6/6 にすると、CPU とヒープの使用量も下がりました。10/4 では、CPU は下がりましたが、メモリはあまり変わりませんでした。
- どの条件でも tick の平均は 50ms 未満でした(平均で見れば 20 TPS)。
「重い」を数字で確かめる
サーバーのコンソールで tick query を実行すると、1 tick にかかる平均時間と、P50/P95/P99 が表示されます。当サイトの検証で実際に出た表示です。
[Server thread/INFO]: Average time per tick: 16.2ms (Target: 50.0ms)
[Server thread/INFO]: Percentiles: P50: 11.8ms P95: 58.8ms P99: 79.3ms. Sample: 100
目標の 50ms を超える tick が多いほど、ゲームの進み方が遅れます。処理が大きく遅れたときは、ログに「Can’t keep up! Is the server overloaded?」と出ます。当サイトでも、大量のチャンクを一度に読み込ませたときに出ました(メモリの実測記事)。
計測の条件
| 項目 | 内容 |
|---|---|
| サーバー | 26.1 の公式 server.jar(ボット用のライブラリ mineflayer が 26.3 にまだ対応していないため) |
| 人数と動き | ボット5体が、それぞれ別の方向へ走りながらジャンプを続ける(新しい地形を生成させ続ける負荷) |
| 計測 | 全員が接続してから 30/60/90 秒後に tick query。CPU とメモリは2秒ごとに記録 |
| そのほか | 毎回、同じシードで新しいワールドを作成。待ち受けは 127.0.0.1 のみ。各条件1回ずつ(10/10 は前日の計測) |
結果
| view/simulation | tick 平均(30/60/90秒後) | P99 の最大 | CPU の平均(最大) | メモリ(RSS)の平均 | GC 後のヒープ使用量の最大 |
|---|---|---|---|---|---|
| 10/10(初期値) | 16.2/14.2/13.0ms | 79.3ms | 97%(192%) | 2,226MB | 721MB |
| 6/6 | 10.9/11.2/13.7ms | 37.5ms | 78%(159%) | 2,059MB | 461MB |
| 10/4 | 9.9/10.7/11.3ms | 38.5ms | 83%(158%) | 2,199MB | 627MB |
CPU の 100% は1コア分です。
読み取れること
- 重さが一時的に跳ね上がるのを抑える効果が、今回いちばんはっきり出ました(P99 の最大が約半分になった)。
- 6/6 にすると、プレイヤーに送る範囲も小さくなるので、ヒープの使用量も減りました。その代わり、遠くの景色が見えにくくなります。
- 10/4 にすると、見える範囲はそのままで、動かす範囲だけを狭められます。今回の計測では、6/6 と同じくらい tick が下がりました。
- ただし各条件1回だけの計測です。ばらつきは測っていません。走るだけのボットなので、建築・装置・大量の生き物などが原因の重さには、別の対策が必要になる可能性があります。
設定の変え方
server.properties の2行を変えて、サーバーを再起動します(設定は起動するときに読み込まれます)。
view-distance=6
simulation-distance=6
各項目の意味は、server.properties の解説記事にまとめています。
それでも重いとき
- メモリ(ヒープ)が足りているかを確認してください。当サイトの実測では、5人でヒープを 1GB にすると、上限近くまで使っていました(同時接続人数の実測記事)。
- サーバーを動かしているマシンの余力が足りない場合は、マシンやプランを見直すことも考えます(自宅PCとゲーム用VPSの判断ガイド)。
参照URL
- Minecraft Java Edition サーバー(公式): https://www.minecraft.net/en-us/download/server
- Minecraft EULA: https://aka.ms/MinecraftEULA
- mineflayer(GitHub): https://github.com/PrismarineJS/mineflayer
- 計測の生データ(当サイト内、非公開): lab/runs2/、lab/README.md(記録 #003)