Skip to main content
← All Guides
Performance · 6 min read

How to Diagnose Server Lag, Step by Step Checklist

A step-by-step checklist to diagnose Minecraft server lag, identify the cause, and fix TPS drops systematically.

Before You Start

When players complain about lag, the worst thing you can do is guess. Changing random settings wastes time and can make things worse. Instead, follow this checklist to diagnose minecraft server lag methodically. Every step narrows down the cause so you fix the right thing.

Step 1: Check TPS

Run /spark tps or /tps. A healthy server sits at 20.0 TPS. If TPS is below 19, the server is struggling. If TPS reads 20 but players still feel lag, the issue is likely network latency or client-side, not server-side.

  • 20 TPS: Server is fine. Check player ping and client FPS.
  • 15-19 TPS: Mild lag. Something is consuming extra tick time.
  • Below 15 TPS: Severe. The server cannot keep up with game logic.

Step 2: Run a Spark Profile

Install Spark if you have not already. Run /spark profiler start, wait 2 to 5 minutes during peak activity, then /spark profiler stop. Open the generated report link.

Look at the top entries under the server thread. The methods consuming the most time reveal where the lag originates. Common culprits:

  • Entity ticking: Too many mobs or entities.
  • Chunk generation: World not pregened, new terrain loading on the fly.
  • Plugin methods: A specific plugin running heavy logic each tick.
  • Tile entity ticking: Hoppers, pistons, or other redstone machines.

Step 3: Check Memory

Run /spark health. Look at heap usage. If the server is using over 85% of allocated RAM, garbage collection stalls may be causing lag spikes. See our GC lag guide for solutions.

Also check whether your JVM flags are properly configured. Misconfigured flags are a frequent cause of GC-related lag.

Step 4: Identify the Lag Type

Use your Spark data to diagnose minecraft server lag into one of these categories:

Entity Lag

Spark shows EntityLiving.tick or similar at the top. Solution: reduce mob caps, remove excessive item frames, clear ground items. See entity lag reduction and mob spawning configuration.

Chunk Lag

Spark shows chunk loading or generation dominating. Solution: pregenerate your world and lower view/simulation distances.

Plugin Lag

Spark shows a specific plugin method eating tick time. Solution: update the plugin, check its configuration for expensive features, or find an alternative.

Redstone/Tile Entity Lag

Spark shows hopper or piston ticking. Solution: limit hopper transfer rates in Paper config, or ask players to reduce machine complexity.

Step 5: Check Disk I/O

If Spark does not show an obvious CPU bottleneck, your storage may be slow. Run iostat or check your hosting panel for disk latency. Chunk saving and loading on HDD storage causes lag spikes that do not show clearly in CPU profiles. NVMe SSDs eliminate this problem entirely.

See an optimized server in action: Astroworld MC, IP play.astroworldmc.com, Java + Bedrock.

Step 6: Verify the Fix

After making changes, run another Spark profile during peak hours. Compare the new report with the old one. If the top bottleneck has shifted or TPS has improved, your fix worked. If not, return to step 2 and diagnose minecraft server lag again with fresh data.

The Complete Checklist

  • Check TPS with /spark tps.
  • Profile with /spark profiler.
  • Check heap with /spark health.
  • Categorize the lag (entity, chunk, plugin, tile entity, disk).
  • Apply targeted fix.
  • Re-profile to confirm improvement.

Following this process every time will save you hours of trial and error. Diagnose minecraft server lag with data, not guesses.

Related Tools & Resources

🔧

Minecraft Tools

Calculators, generators & server tools

🧱

Item Database

Browse all Minecraft items, stats & recipes

⚒️

Crafting Recipes

Visual crafting guides for every recipe