MC ToolboxMC TOOLBOX

July 18, 2026

How to Read Spark Profiler Reports to Fix Minecraft Server Lag (26.x)

A deep technical guide to diagnosing MSPT spikes, entity tick bottlenecks, chunk I/O, and garbage collection pauses using Spark profiler reports.

If your Paper, Purpur, or Fabric server experiences lag spikes or low TPS, asking for advice on Reddit r/admincraft or Discord server admin groups will almost always yield the same response: "Post your Spark profile report!"

Spark is the gold-standard CPU, memory, and tick profiler for Minecraft servers. However, opening a Spark flame graph for the first time can be overwhelming with hundreds of nested Java methods. This guide teaches you how to read Spark profiler reports like an experienced server administrator and fix the exact root cause of your server lag.

Understanding TPS vs. MSPT Metrics

  • TPS (Ticks Per Second): Target is 20.0. The Minecraft game loop ticks 20 times every second (1 tick = 50 milliseconds). If TPS drops below 20.0, the game slows down, mob movement stutters, and blocks break with delay.
  • MSPT (Milliseconds Per Tick): Target is under 50.0ms. MSPT measures how many milliseconds the CPU took to process a single tick. As long as MSPT stays below 50ms, TPS remains at a solid 20.0. If MSPT spikes to 80ms, TPS drops to ~12.5.
Spark profiler 3D server control room monitor
Analyzing thread tick duration, method call trees, and CPU usage in Spark profiler reports.

Top 4 Server Lag Bottlenecks in Spark Reports

1. Entity Ticking (ServerLevel#tickEntities > 40%)

Symptom in Spark: High percentage spent inside net.minecraft.world.entity, villager brain pathfinding (Villager#tick), or hopper item searching.

Fixes:

  • Install Lithium (Fabric) or tune entity-activation-range in Paper.yml.
  • Lower villager tick frequency in paper-world-defaults.yml.
  • Replace large vanilla hopper arrays with optimized 26.x unstackable sorter designs.

2. Chunk Loading & Generation (ChunkProviderServer > 30%)

Symptom in Spark: High CPU time spent inside NoiseBasedChunkGenerator or region file disk read/writes while players fly with Elytra into unexplored territory.

Fixes:

  • Pre-generate your world border completely using the Chunky plugin before opening your server to players.
  • Set max-auto-save-chunks-per-tick to 6 in Paper config.

3. Redstone & Physics Clocks (RedstoneWireBlock#onPlace)

Symptom in Spark: Method calls to block updating and lighting queue recalculations dominating main thread time.

Fixes:

  • Install Alternate Current mod/plugin to replace vanilla redstone propagation with a fast $O(1)$ block update queue.

4. Java Garbage Collection Pauses (GC Pauses > 100ms)

Symptom in Spark: Periodic sharp TPS drops to 10.0 every 30 seconds followed by instant recovery to 20.0.

Fixes:

  • Apply tuned G1GC Aikar JVM flags to optimize memory garbage collection pauses.

Generate optimized start scripts for Windows (.bat) and Linux (.sh) servers with our Server Start Script Generator!

Gio Nui

Gio Nui

I'm an independent developer and long-time Minecraft creator. Since 2011, I've been focused on building high-performance, browser-based tools for the community.

More Guides