If you have ever played on a multiplayer Minecraft server, you have likely encountered moments where blocks re-appear after you break them, mobs move in stuttered slow-motion, or eating food takes several seconds to register. In the Minecraft community, this phenomenon is universally called server lag or TPS drop.
In this guide, we explain what TPS (Ticks Per Second) and MSPT (Milliseconds Per Tick) mean, how to measure them, and how to eliminate lag on your RivinCloud VPS.
1. What is TPS (Ticks Per Second)?
Minecraft runs on an internal clock. Under ideal conditions, a Minecraft server executes exactly 20 ticks per second (20.0 TPS):
- 1 Second = 1,000 milliseconds
- 1,000ms / 20 Ticks = 50 milliseconds per tick (50ms)
Every 50ms, the server calculates:
- Mob movement and AI pathfinding.
- Redstone signals, hopper item transfers, and piston pushes.
- Crop, sapling, and plant growth ticks.
- Player physics, block breaking, and damage calculations.
2. The Relationship Between TPS and MSPT
While players look at TPS, server administrators monitor MSPT (Milliseconds Per Tick) for the true health of the server:
MSPT ≤ 50.0ms ──► Server completes calculations within 50ms ──► Locked 20.0 TPS (Zero Lag!)
MSPT = 75.0ms ──► Server takes 75ms per tick (Overloaded) ──► Drops to 13.3 TPS (Noticeable Lag)
MSPT = 100ms ──► Server takes 100ms per tick (Severe Lag) ──► Drops to 10.0 TPS (Heavy Rubberband)
- TPS caps at 20.0: Even if your server is ultra-fast and finishes a tick in 10ms (10ms MSPT), TPS will never exceed 20.0. The server simply sleeps for the remaining 40ms.
- When MSPT exceeds 50ms: The server cannot finish its work in time. Game time literally slows down relative to real-world clock time!
3. How to Check Your TPS and MSPT
Using In-Game Server Commands:
- On Paper / Purpur: Type
/tpsor/msptin the server console.TPS from last 1m, 5m, 15m: 20.0, 19.98, 20.0 Server tick times (MSPT): avg: 18.4ms, min: 12.1ms, max: 28.6ms - Using Spark Plugin: Type
/spark healthreportfor a full memory, CPU, and tick breakdown.
4. Top Causes of Low TPS and How to Fix Them
1. Excessive Entities (Mob Farms & Villagers)
- Problem: Cramming 500 cows or villagers into small pens consumes huge CPU calculating collision boxes and pathfinding.
- Fix: Lower entity activation ranges in
spigot.yml:entity-activation-range: animals: 16 monsters: 24 raiders: 32 misc: 8
2. High Simulation Distance
- Problem: Setting
simulation-distance: 12forces the server to tick millions of blocks across dozens of loaded chunks per player. - Fix: In
server.properties, set:simulation-distance=5 view-distance=8
3. Hopper Chains without Composters
- Problem: Unlocked hoppers constantly query the air block above them to check for dropped items.
- Fix: Place composters or full storage blocks directly on top of hoppers to stop unnecessary air block scans, or enable
hopper.disable-move-event: trueinpaper-world.yml.
Common Mistakes
- Confusing Network Ping (Latency) with TPS Lag: If TPS is a solid 20.0 but a player experiences delays, the issue is their network internet connection (ping), not server processing lag.
- Allocating excessive RAM: Running Java with massive heap allocations without proper G1GC flags can cause periodic garbage collection freezes where TPS drops to 0 for several seconds.
Troubleshooting
- TPS suddenly drops to 0 and server crashes: Check logs for "Watchdog Thread Dump". This indicates a single task hung for over 60 seconds (usually an infinite loop in a third-party plugin).
Best Practices
- Use Paper or Purpur rather than standard Vanilla software.
- Pre-generate world chunks using Chunky to avoid live chunk generation tick spikes.
Frequently Asked Questions
Can TPS be higher than 20?
No. In Minecraft's game design, 20 ticks per second is the hardcoded game loop ceiling. Any faster would speed up game physics unnaturally!
Conclusion
Understanding the dynamic between TPS and MSPT gives you the diagnostic tools needed to maintain a lag-free gaming environment. Host your high-performance Minecraft worlds on RivinCloud VPS!