MineFixTools server utility lab
Fixes 3 min read Updated

Fix Minecraft Server TPS Drops

Fix Minecraft server TPS drops by profiling Spark, checking MSPT, entities, chunks, plugin tasks, view distance, memory, and hosting limits.

TPS drops mean the server main thread is not completing ticks quickly enough. Guessing at settings can make performance worse, so start with a profile captured during the actual lag window.

Capture a Profile During the Problem

Use Spark or your platform's recommended profiler while the lag is happening. A profile captured when nobody is online will not explain evening lag.

/spark profiler --timeout 120

Look for main-thread hotspots, plugin tasks, chunk generation, entity AI, hopper activity, redstone clocks, world saves, and database calls. If the log also contains Can't keep up! Is the server overloaded?, paste a focused excerpt into the startup log classifier to confirm the pattern.

Separate TPS, MSPT, Memory, and Ping

These symptoms get mixed together:

  1. TPS shows whether the server is keeping up with ticks.
  2. MSPT shows how long each tick takes.
  3. Memory pressure shows whether garbage collection is interrupting the server.
  4. Ping shows network delay between the player and server.

A server can have low ping and terrible TPS. It can also have 16 GB of RAM and still run at 12 TPS if the CPU is saturated.

Avoid oversized heaps

Huge heaps can create longer garbage collection pauses. Give the server enough memory, then fix the actual workload.

Check Chunks and Distance Settings

view-distance controls how many chunks players can see. simulation-distance controls how many chunks run entity and block ticking. Reducing simulation distance often helps more than reducing view distance alone because it reduces active work.

Start with the view distance vs simulation distance guide before applying aggressive values. A survival server with farms and villagers needs different tradeoffs than a minigame hub.

Audit Entity Load

High entity counts often come from villagers, farms, item piles, armor stands, projectiles, minecarts, pets, and poorly controlled mob spawning. Measure per world and per region before applying global caps.

Good fixes are targeted:

  1. Clear item piles from specific farms.
  2. Reduce excessive villagers in loaded chunks.
  3. Limit always-loaded farms.
  4. Tune activation ranges carefully.
  5. Fix mob cap behavior instead of deleting all entities on a timer.

Review Plugin Tasks

Plugins that scan chunks, update scoreboards too often, query storage synchronously, or run large protection lookups can dominate the tick. Update, reconfigure, or replace the specific plugin instead of blaming the whole stack.

If a plugin only spikes when many players join, check joins, placeholders, permissions, economy lookups, tab lists, chat formatting, and database connections.

Tune Paper and JVM Settings After the Profile

Once the largest cost is clear, use focused changes:

  1. Adjust Paper or Purpur settings for distances, entities, hoppers, and saves.
  2. Use the Paper performance settings guide for safe areas to review.
  3. Generate conservative JVM flags with the JVM flag generator if garbage collection appears in the evidence.

Change one area, restart cleanly, profile during the same player pattern, and keep only the changes that actually improve MSPT.

FAQ

Is more RAM the best fix for TPS drops?

Usually no. Too little RAM causes garbage collection pressure, but recurring low TPS is often limited by CPU, entities, chunks, or plugin work on the main thread.

What TPS should I target?

A healthy Java server targets 20 TPS. Short dips can happen, but recurring low TPS needs profiling and workload reduction.

Should I restart every time TPS drops?

Restarting can hide the evidence. Capture a profile first if the server is still usable, then restart only if players are stuck.

Related Tools

Related Articles