【2025年最新】マイクラサーバーTPS低下の原因調査完全ガイド!Sparkプロファイラで徹底分析

【2025年最新】マイクラサーバーTPS低下の原因調査完全ガイド!Sparkプロファイラで徹底分析

マイクラサーバーで最も深刻な問題の一つが、TPS(Ticks Per Second)の低下です。プレイヤーの動きがカクカクし、レッドストーン回路が正常に動作しない…そんな経験はありませんか?この記事では、Sparkプロファイラを使った科学的なラグ原因分析から、実践的な解決策まで完全解説します!

目次

1. TPSとMSPTの基礎知識

TPSとは何か?

TPS(Ticks Per Second):

  • サーバーが1秒間に処理できるゲームティック数
  • 理想値:20TPS(1ティック = 50ms)
  • 18TPS以下:プレイヤーに体感できるラグ
  • 15TPS以下:深刻なパフォーマンス問題

MSPT(Milliseconds Per Tick):

  • 1ティックの処理にかかる時間(ミリ秒)
  • 理想値:50ms以下
  • 60ms以上:ラグの発生
  • 100ms以上:重大な問題

TPS and MSPT Graph 出典: Spark Documentation

ラグの種類と特徴

サーバーラグ(TPS低下):

  • 症状:全プレイヤーに影響
  • 原因:CPU処理、メモリ不足、重い処理
  • 確認方法:/forge tps または /tps

クライアントラグ(FPS低下):

  • 症状:個別プレイヤーのみ
  • 原因:グラフィック処理、クライアント設定
  • 確認方法:F3キーでFPS確認

ネットワークラグ(遅延):

  • 症状:動作の遅延、巻き戻り
  • 原因:回線品質、距離、パケットロス
  • 確認方法:ping値の測定

2. Sparkプロファイラの導入と基本操作

Sparkプラグインのインストール

Bukkit/Spigot/Paper サーバー:

Copy# 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版):

Copy# modsフォルダにダウンロード
cd /opt/minecraft/mods
wget https://ci.lucko.me/job/spark/lastSuccessfulBuild/artifact/spark-fabric/build/libs/spark-fabric-1.10.73.jar

基本的なプロファイリング手順

ステップ1:プロファイリング開始

/spark profiler start

ステップ2:問題の再現

  • ラグが発生している状況を5-10分間維持
  • 通常プレイを継続してリアルなデータを収集

ステップ3:プロファイリング停止

/spark profiler stop

ステップ4:結果の確認

/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 サーバーでの設定:

Copy# 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レポートの読み方

Timings Analysis 出典: indifferent broccolipedia

重要な確認項目:

  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):

Copy# エンティティ削除設定
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設定例):

Copy# 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. タイルエンティティ最適化

問題のあるタイルエンティティの特定

重いタイルエンティティランキング:

  1. ホッパー: 最も重い処理
  2. レッドストーン回路: 複雑な信号処理
  3. チェスト(特に大型): 在庫管理
  4. かまど・溶鉱炉: 製錬処理
  5. 看板: 文字レンダリング

ホッパー最適化テクニック

効率的なホッパー設計:

悪い例:
[チェスト]
   ↓
[ホッパー] → [ホッパー] → [ホッパー] → [チェスト]

良い例:
[チェスト]
   ↓
[ホッパー]
   ↓
[水流輸送]
   ↓
[ホッパー] → [チェスト]

ホッパー設定の最適化(Paper):

Copy# 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ブロック以内で分割
  • リピーターの削減: 可能な限り直接接続
  • オブザーバーブロックの制限: 連鎖反応を避ける

問題のある回路パターン:

❌ 高速クロック回路(1tick間隔)
❌ 巨大なレッドストーン配線
❌ 無限ループ回路
❌ 不必要なリピーター連鎖

6. 効果的なラグ対策プラグイン

必須プラグイン一覧

パフォーマンス監視:

  • Spark: 総合プロファイラ
  • Observable: リアルタイム監視
  • LagGoggles: ビジュアルラグ診断

エンティティ管理:

  • ClearLag: 定期的なクリーンアップ
  • EntityLimiter: エンティティ数制限
  • MobLimiter: モブスポーン制御

チャンク最適化:

  • ChunkManager: チャンク管理
  • LaggRemover: ラグ要因除去
  • TileEntityLimiter: タイルエンティティ制御

プラグイン設定例

ClearLag 最適設定:

Copysettings:
  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 監視設定:

Copyperformance:
  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監視とアラート:

Copy#!/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 ダッシュボード設定

重要なメトリクス:

Copy# 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

アラートルール:

Copygroups:
- 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

推奨理由:

  • 高性能CPU(3コア〜)で安定したTPS維持
  • 大容量メモリでエンティティ処理が快適
  • 専用サポートでトラブル時も安心
  • 自動バックアップでデータ保護

TPS最適化プラン:

  • 8GBプラン:月額4,400円(20人以下推奨)
  • 16GBプラン:月額9,750円(50人以下推奨)

特徴:

  • 99.99%の稼働率保証
  • NVMe SSDで高速ディスクI/O
  • 24時間監視サービス

エックスサーバー VPS for Game 公式サイト

🎯 コスパ重視:ConoHa for GAME

推奨理由:

  • 時間課金制で効率的な運用
  • 高速SSDでチャンク読み込みが快適
  • 豊富なテンプレートで簡単セットアップ
  • 初期費用無料

料金プラン:

  • 8GBプラン:月額4,066円
  • 16GBプラン:月額9,834円

特徴:

  • 柔軟な料金体系
  • リージョン選択可能
  • 充実したAPIサポート

ConoHa for GAME 公式サイト

💰 予算重視:カゴヤ CLOUD VPS

推奨理由:

  • 最安級価格でコスト効率重視
  • 安定した性能でTPS維持
  • 国内企業の信頼性
  • 長期利用に最適

料金プラン:

  • 4GBプラン:月額1,958円(軽量サーバー)
  • 8GBプラン:月額7,700円(中規模サーバー)

特徴:

  • 高いコストパフォーマンス
  • 長期契約割引
  • 充実したサポート体制

カゴヤ CLOUD VPS 公式サイト

パフォーマンス最適化設定

JVM引数(TPS重視):

Copyjava -Xms8G -Xmx8G \
  -XX:+UseG1GC \
  -XX:G1HeapRegionSize=4M \
  -XX:MaxGCPauseMillis=50 \
  -XX:+ParallelRefProcEnabled \
  -XX:+AlwaysPreTouch \
  -XX:+DisableExplicitGC \
  -jar server.jar nogui

server.properties(TPS最適化):

Copy# 描画距離の最適化
view-distance=6
simulation-distance=4

# エンティティ最適化
max-entity-cramming=8
entity-broadcast-range-percentage=75

# その他最適化
network-compression-threshold=512
player-idle-timeout=60

まとめ

マイクラサーバーのTPS低下は複雑な問題ですが、適切な分析ツールと対策により必ず解決できます。Sparkプロファイラを使った科学的アプローチにより、推測ではなく事実に基づいた最適化が可能になります。

TPS最適化の重要ポイント:

  1. 継続的な監視: SparkとObservableによる24時間監視
  2. 事実に基づく分析: 推測ではなくプロファイリング結果で判断
  3. 段階的な最適化: 一度に多くの変更をせず、効果を検証
  4. 予防的措置: 問題が発生する前の対策実装
  5. 適切なインフラ: サーバー性能がボトルネックにならない構成

特にエックスサーバー VPS for GameConoHa for GAMEカゴヤ CLOUD VPSは、それぞれ異なるニーズに対応した優秀なサービスです。予算と規模に応じて適切に選択することで、安定した20TPSを維持できます。

2025年のマイクラサーバー運用では、もはや「なんとなく重い」は通用しません。科学的なアプローチで、プレイヤーが快適に遊べる環境を提供しましょう!


※本記事は2025年7月時点の情報に基づいて執筆されています。各プラグインやツールのバージョンは最新のものを使用し、定期的なアップデートを心がけてください。

参考リンク:

免責事項: サーバーの設定変更は事前にバックアップを取り、テスト環境で動作確認を行ってから本番環境に適用してください。各プラグインの利用規約を遵守し、サーバーの安定稼働を最優先に運用してください。

目次