Minecraft TPS最適化完全ガイド
【2025年8月最新版】Sparkプロファイラによる科学的ラグ対策
理想TPS
理想MSPT
対応バージョン
サーバーラグの深刻な問題
マイクラサーバーで最も深刻な問題の一つが、TPS(Ticks Per Second)の低下です。プレイヤーの動きがカクカクし、レッドストーン回路が正常に動作しない…そんな経験はありませんか?
この記事では、Sparkプロファイラを使った科学的なラグ原因分析から、実践的な解決策まで完全解説します!
1. TPSとMSPTの基礎知識
TPS(Ticks Per Second)
- サーバーが1秒間に処理できるゲームティック数
- 理想値:20TPS(1ティック = 50ms)
- 18TPS以下:プレイヤーに体感できるラグ
- 15TPS以下:深刻なパフォーマンス問題
MSPT(Milliseconds Per Tick)
- 1ティックの処理にかかる時間(ミリ秒)
- 理想値:50ms以下
- 60ms以上:ラグの発生
- 100ms以上:重大な問題
ラグの種類と特徴
サーバーラグ(TPS低下)
- 症状:全プレイヤーに影響
- 原因:CPU処理、メモリ不足、重い処理
- 確認方法:
/tps
クライアントラグ(FPS低下)
- 症状:個別プレイヤーのみ
- 原因:グラフィック処理、クライアント設定
- 確認方法:F3キーでFPS確認
ネットワークラグ(遅延)
- 症状:動作の遅延、巻き戻り
- 原因:回線品質、距離、パケットロス
- 確認方法:ping値の測定
2. Sparkプロファイラの導入と基本操作
Sparkプラグインのインストール
Bukkit/Spigot/Paper サーバー
# pluginsフォルダにダウンロード
cd /opt/minecraft/plugins
wget https://ci.lucko.me/job/spark/lastSuccessfulBuild/artifact/spark-bukkit/build/libs/spark-bukkit-1.10.73.jar
Fabric/Forge サーバー(MOD版)
# modsフォルダにダウンロード
cd /opt/minecraft/mods
wget https://ci.lucko.me/job/spark/lastSuccessfulBuild/artifact/spark-fabric/build/libs/spark-fabric-1.10.73.jar
基本的なプロファイリング手順
プロファイリング開始
/spark profiler start
問題の再現
ラグが発生している状況を5-10分間維持
プロファイリング停止
/spark profiler stop
結果の確認
/spark profiler open
高度なプロファイリングオプション
特定要素に絞った分析:
# エンティティのみをプロファイル
/spark profiler start --only-ticks-over 50 --thread server
# 特定ワールドのみ
/spark profiler start --combine-all --thread server
# メモリ使用量も同時に分析
/spark heapdump
3. Timings v2による詳細分析
Timings v2の有効化
Paper/Spigot サーバーでの設定:
# spigot.yml
settings:
debug: false
timeout-time: 60
restart-on-crash: true
restart-script: ./start.sh
timings:
enabled: true
verbose: true
server-name-privacy: false
hidden-config-entries:
- database
- proxies
history-interval: 300
history-length: 3600
Timingsレポートの取得
基本コマンド:
/timings on
# 5-10分間の通常プレイ
/timings paste
詳細分析用:
/timings reset
/timings on
# 問題発生時のプレイ
/timings paste
Timingsレポートの読み方
重要な確認項目:
-
1
Total Time: 全体の処理時間 -
2
Tick Time: ティック処理時間 -
3
Entity Activation: エンティティ処理 -
4
Tile Entity Ticking: タイルエンティティ処理 -
5
World Ticking: ワールド更新処理
問題のある値の目安:
Avg Tick: > 50ms (問題)
Entity Activation: > 10ms (要注意)
Tile Entity: > 15ms (重大)
World Ticking: > 20ms (問題)
4. エンティティ削減の実践的手法
エンティティ数の確認
基本的な確認コマンド:
/forge entity_count
/minecraft:summon
/essentials:entitycount
詳細分析:
# エンティティタイプ別カウント
/spark profiler start --only-ticks-over 100 --thread server
# エンティティの位置確認
/minecraft:execute as @e run data get entity @s Pos
効果的なエンティティ管理
自動削除設定例(server.properties):
# エンティティ削除設定
entity-broadcast-range-percentage=100
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
display: 128
# スポーン制限
spawn-limits:
monsters: 15
animals: 10
water-animals: 5
water-ambient: 20
ambient: 15
プラグインによる管理(ClearLag設定例):
# config.yml
settings:
auto-removal-enabled: true
removal-broadcast-enabled: true
removal-delay: 300 # 5分間隔
auto-removal:
enabled: true
broadcast: true
autoremoval-interval: 300
items:
- minecraft:cobblestone
- minecraft:dirt
- minecraft:stone
entities:
enabled: true
limit: 1000
check-interval: 120
remove:
- minecraft:zombie
- minecraft:skeleton
- minecraft:spider
緊急時のクリーンアップコマンド
# 全アイテムエンティティの削除
/minecraft:kill @e[type=item]
# 特定範囲のモンスター削除
/minecraft:kill @e[type=#minecraft:hostile,distance=..100]
# 古いエンティティの削除(5分以上存在)
/minecraft:kill @e[type=item,nbt={Age:6000s}]
# エクスペリエンスオーブの削除
/minecraft:kill @e[type=experience_orb]
5. タイルエンティティ最適化
重いタイルエンティティランキング
ホッパー
最も重い処理
レッドストーン回路
複雑な信号処理
チェスト(特に大型)
在庫管理
かまど・溶鉱炉
製錬処理
看板
文字レンダリング
ホッパー最適化テクニック
悪い例:
[チェスト]
↓
[ホッパー] → [ホッパー] → [ホッパー] → [チェスト]
良い例:
[チェスト]
↓
[ホッパー]
↓
[水流輸送]
↓
[ホッパー] → [チェスト]
ホッパー設定の最適化(Paper):
# paper.yml
hopper:
cooldown-when-full: true
disable-move-event: false
ignore-occluding-blocks: false
hopper-amount: 1
ticks-per:
hopper-transfer: 8 # デフォルト: 8
hopper-check: 1 # デフォルト: 1
レッドストーン回路の最適化
効率的なレッドストーン設計:
-
クロック回路の削減: 必要最小限に -
信号強度の最適化: 15ブロック以内で分割 -
リピーターの削減: 可能な限り直接接続 -
オブザーバーブロックの制限: 連鎖反応を避ける
問題のある回路パターン:
6. 効果的なラグ対策プラグイン
必須プラグイン一覧
パフォーマンス監視
-
Spark: 総合プロファイラ -
Observable: リアルタイム監視 -
LagGoggles: ビジュアルラグ診断
エンティティ管理
-
ClearLag: 定期的なクリーンアップ -
EntityLimiter: エンティティ数制限 -
MobLimiter: モブスポーン制御
チャンク最適化
-
ChunkManager: チャンク管理 -
LaggRemover: ラグ要因除去 -
TileEntityLimiter: タイルエンティティ制御
プラグイン設定例
ClearLag 最適設定:
settings:
auto-removal-enabled: true
removal-broadcast-enabled: true
removal-delay: 300
modules:
limit:
enabled: true
max: 1000
check-interval: 60
chunk-entity-limiter:
enabled: true
limit: 100
mob-range:
enabled: true
range: 64
Observable 監視設定:
performance:
tps-threshold: 18.0
mspt-threshold: 55.0
memory-threshold: 85
alerts:
discord-webhook: "https://discord.com/api/webhooks/..."
enable-broadcasts: true
enable-actionbar: true
7. プリベンティブ(予防的)監視システム
自動監視スクリプト
TPS監視とアラート:
#!/bin/bash
# tps_monitor.sh
TPS_THRESHOLD=18
ALERT_EMAIL="admin@example.com"
LOG_FILE="/var/log/minecraft_tps.log"
while true; do
# TPSの取得(Sparkプラグイン使用)
TPS=$(screen -S minecraft -p 0 -X stuff "spark tps$(echo -ne '\r')" | grep "TPS" | awk '{print $2}')
if (( $(echo "$TPS < $TPS_THRESHOLD" | bc -l) )); then
echo "$(date): LOW TPS DETECTED: $TPS" >> $LOG_FILE
# アラートメール送信
echo "Minecraft server TPS is low: $TPS" | \
mail -s "Minecraft TPS Alert" $ALERT_EMAIL
# 自動プロファイリング開始
screen -S minecraft -p 0 -X stuff "spark profiler start$(echo -ne '\r')"
sleep 300 # 5分間プロファイル
screen -S minecraft -p 0 -X stuff "spark profiler stop$(echo -ne '\r')"
screen -S minecraft -p 0 -X stuff "spark profiler open$(echo -ne '\r')"
fi
sleep 60 # 1分間隔でチェック
done
Grafana ダッシュボード設定
重要なメトリクス:
# prometheus設定例
- job_name: 'minecraft-spark'
static_configs:
- targets: ['localhost:9225']
scrape_interval: 5s
metrics_path: /metrics
# 監視項目
- minecraft_tps
- minecraft_mspt
- minecraft_memory_used
- minecraft_entities_count
- minecraft_chunks_loaded
- minecraft_players_online
アラートルール:
groups:
- name: minecraft_performance
rules:
- alert: MinecraftLowTPS
expr: minecraft_tps < 18
for: 2m
labels:
severity: warning
annotations:
summary: "Minecraft TPS is low: {{ $value }}"
- alert: MinecraftHighMSPT
expr: minecraft_mspt > 60
for: 1m
labels:
severity: critical
annotations:
summary: "Minecraft MSPT is high: {{ $value }}ms"
8. おすすめサーバー構成
小中規模サーバー最適化構成
🏆 安定重視
エックスサーバー VPS for Game
TPS最適化プラン:
- 8GBプラン:月額4,400円(20人以下推奨)
- 16GBプラン:月額9,750円(50人以下推奨)
99.99%
NVMe SSD
24時間
🎯 コスパ重視
ConoHa for GAME
料金プラン:
- 8GBプラン:月額4,066円
- 16GBプラン:月額9,834円
柔軟
選択可能
充実
💰 予算重視
カゴヤ CLOUD VPS
料金プラン:
- 4GBプラン:月額1,958円(軽量サーバー)
- 8GBプラン:月額7,700円(中規模サーバー)
高い
長期割引
充実
パフォーマンス最適化設定
JVM引数(TPS重視):
java -Xms8G -Xmx8G \
-XX:+UseG1GC \
-XX:G1HeapRegionSize=4M \
-XX:MaxGCPauseMillis=50 \
-XX:+ParallelRefProcEnabled \
-XX:+AlwaysPreTouch \
-XX:+DisableExplicitGC \
-jar server.jar nogui
server.properties(TPS最適化):
# 描画距離の最適化
view-distance=6
simulation-distance=4
# エンティティ最適化
max-entity-cramming=8
entity-broadcast-range-percentage=75
# その他最適化
network-compression-threshold=512
player-idle-timeout=60
推奨サーバースペック比較表
プレイヤー数 | CPU | メモリ | ストレージ | 推奨サーバー |
---|---|---|---|---|
5-10人 | 2コア | 4GB | SSD 50GB | ConoHa for GAME |
11-30人 | 4コア | 8GB | SSD 100GB | XServer VPS for Game |
31-50人 | 6コア | 16GB | SSD 200GB | さくら VPS |
まとめ
マイクラサーバーのTPS低下は複雑な問題ですが、適切な分析ツールと対策により必ず解決できます。Sparkプロファイラを使った科学的アプローチにより、推測ではなく事実に基づいた最適化が可能になります。
TPS最適化の重要ポイント
SparkとObservableによる24時間監視
推測ではなくプロファイリング結果で判断
一度に多くの変更をせず、効果を検証
問題が発生する前の対策実装
サーバー性能がボトルネックにならない構成
特にエックスサーバー VPS for Game、ConoHa for GAME、カゴヤ CLOUD VPSは、それぞれ異なるニーズに対応した優秀なサービスです。
予算と規模に応じて適切に選択することで、安定した20TPSを維持できます。
2025年のマイクラサーバー運用
もはや「なんとなく重い」は通用しません。
科学的なアプローチで、プレイヤーが快適に遊べる環境を提供しましょう!
※本記事は2025年8月時点の情報に基づいて執筆されています。各プラグインやツールのバージョンは最新のものを使用し、定期的なアップデートを心がけてください。
免責事項: サーバーの設定変更は事前にバックアップを取り、テスト環境で動作確認を行ってから本番環境に適用してください。各プラグインの利用規約を遵守し、サーバーの安定稼働を最優先に運用してください。