Minecraft Server Lag Explained: TPS, MSPT, and 'Can’t Keep Up'

This guide explains what TPS and MSPT actually mean, why “Can’t keep up” appears in the console, and which checks help you separate CPU, chunk, entity, and plugin problems quickly.

Performance
setupmc.com Team

Need a cleaner baseline?

Generate a Compose setup before you keep patching by hand

If you are still refining the server baseline, use the configurator to create a cleaner Docker Compose setup and then return to the guides for the next issue.

Open configurator

Start with the right mental model

When admins say “the server lags”, they often mix several problems together:

  • low TPS
  • high MSPT
  • chunk generation spikes
  • plugin slowdowns
  • network problems that only feel like lag

The useful part is this:

  • the server tries to run 20 ticks per second
  • that means it has 50 ms per tick on average

If your average tick time exceeds that budget, TPS begins to fall and the server may log messages such as Can't keep up!.

What TPS and MSPT actually tell you

TPS

TPS means ticks per second. At the target rate, the server reaches 20 TPS.

MSPT

MSPT means milliseconds per tick. This is often the more actionable number because it shows how much time the server needs to process game logic.

As a practical rule:

  • around or below 50 ms average tick time is where the server can still sustain 20 TPS
  • above that, the server begins to fall behind

First checks before you change any settings

Do these in order:

  1. confirm that the issue is active right now
  2. measure instead of guessing
  3. change one thing at a time

On Paper 1.21 and newer, start with Spark because it is bundled and is the preferred profiler:

/spark tps
/spark profiler start --timeout 600

If you are not on Paper yet, read Paper vs Vanilla vs Fabric vs Forge before assuming your current server software is the best base for performance work.

The usual causes of lag

1. CPU-bound ticks

Minecraft server work is still very sensitive to single-thread performance. If one heavy tick phase takes too long, more RAM will not save you.

2. Chunk generation and exploration

Fast exploration creates chunk generation work. This often appears as spikes instead of constant low TPS.

3. Too much simulation

Paper documents simulation-distance separately from view-distance. That matters because entity ticking and active game logic are not the same as what the client can see.

4. Plugin or mod behavior

A laggy server is often not “Minecraft being Minecraft”. It is often one plugin, one task, or one badly scaled feature.

5. Entity-heavy farms and villages

Large mob farms, dense villager trading halls, and constant hopper activity can dominate tick time.

Safe fix order

Do not start with random config packs. The safer order is:

  1. measure with Spark
  2. identify whether the issue is persistent or spiky
  3. reduce the most expensive source first
  4. only then tune Paper distances

That is how you avoid cargo-cult fixes.

Fast decisions that are usually safe

  • reduce simulation-distance before slashing everything else blindly
  • keep view-distance reasonable for your player count and hardware
  • test changes during the actual lag scenario, not only on an empty server

For concrete values, continue with View Distance vs Simulation Distance: Safe Starting Values for Paper.

Common mistakes

MistakeWhy it failsBetter move
Raising RAM firstCPU or tick problems stay untouchedMeasure MSPT and profile first
Tuning configs without active lagYou optimize the wrong momentCapture data while the problem is happening
Changing five settings at onceYou lose the causal signalMake one meaningful change at a time
Ignoring server software choiceVanilla gives you fewer diagnostics and fewer performance optionsConsider Paper for operational clarity

FAQ

Is “Can’t keep up” always a disaster?

No. A single spike can happen during world generation or startup. The pattern matters more than one isolated message.

Should I lower both distances immediately?

Not automatically. First determine whether chunk visibility, active simulation, entities, or a plugin is actually driving the tick cost.

Next steps

Frequently asked questions

Short answers to the questions that usually come up while working through this topic.