TPS and MSPT explained

Two numbers tell you whether a Minecraft server is keeping up. They measure the same loop from two sides.

The tick

A Minecraft server runs in a loop. Each pass is one tick, and the target is 20 ticks each second. That gives every tick a budget of 50 ms. If a tick finishes early, the server waits for the next one. If ticks run long, the server falls behind and the game slows down. Source: spark docs.

TPS

Ticks per second. 20 is the most it will show, so it hides how much room you have left. A server at 45 ms per tick and one at 5 ms per tick both show 20.

MSPT

Milliseconds per tick: how long each tick really took. This is the better early warning. Under 50 is keeping up. Near 50 means one more busy moment will drop TPS. spark shows the fastest, median, 95th percentile and slowest ticks.

Reading /spark tps

TPS from last 5s, 10s, 1m, 5m, 15m:
 20.0, 20.0, 19.9, 19.8, 19.9

Tick durations (min/med/95%ile/max ms) from last 10s, 1m:
 0.5/0.8/1.6/9.4; 0.4/0.8/1.5/45.4

A low median with a high max is a spike problem. A high median is a steady load problem. They need different captures: see how to use spark.

You can paste this output into the explainer. It will tell you how the server is doing, though only a profile shows why.