← Blog

Comprendre et stabiliser le TPS d'un serveur Minecraft

Par Benjamin D. · PDG

· Mis à jour le September 23, 2026 · Lecture 7 min

Contents

Minecraft server TPS is the single number that tells you whether your world is running smoothly or grinding toward chaos. Every admin has seen it: players teleporting in short bursts, mobs freezing mid-animation, redstone contraptions firing late. This article breaks down what actually drives tick performance — CPU clock speed, RAM allocation, view distance — and shows you how to read the console and timings reports to find the real bottleneck before it wrecks your community's experience.



Understanding Minecraft Server TPS: How the Tick Loop Works

Minecraft runs on a fixed tick rate of 20 ticks per second. Each tick has a strict budget of 50 milliseconds to process everything happening in the world: entity movement, mob AI, block updates, redstone circuits, chunk loading, and network packets. When the game logic for a single tick takes longer than 50ms, the tick loop falls behind, and the server compensates by skipping the sleep phase between ticks. That's when Minecraft server TPS drops below 20, and the world starts to feel sluggish even though nothing has technically crashed.

TPS valueWhat players feel
20Perfectly smooth, no perceptible delay
15-19Minor rubber-banding, slight mob AI delay
10-14Noticeable lag, redstone timing breaks
Below 10Severe desync, entities frozen, chunk loading stalls

The critical detail most admins miss: the entire tick loop — world logic, entity processing, most plugin and mod code — runs on a single main thread. Chunk generation, some network I/O, and asynchronous plugin tasks can spill onto other threads, but the tick itself is single-threaded by design. This is exactly why the next section matters more than most people assume.

Once you understand what limits tick speed, the next practical question is what hardware profile actually sustains 20 TPS under sustained load. If you're weighing your options, take a look at this Minecraft server hosting page for Ryzen-based configurations built around single-core clock speed and NVMe storage, which directly address the bottleneck described above.



Why Single-Core CPU Speed Matters More Than Core Count

A common mistake is picking hardware based on core count, assuming more cores automatically means a smoother world. It doesn't. Since the tick loop is single-threaded, the game logic that determines your Minecraft server TPS is bound almost entirely by the clock speed and instructions-per-cycle efficiency of a single core. A processor with fewer, faster cores at high frequency will keep tick time lower than a processor with many cores running at a lower clock speed, even if the second one looks more powerful on paper.

Ryzen CPUs are commonly favored for game logic precisely because of their high base and boost clock speeds, which translate into shorter tick execution time. Additional cores still help — they handle chunk generation threads, RCON, and some Netty networking work — but they won't rescue a world where the main thread itself is overloaded by too many entities, too many loaded chunks, or too many plugins hooking into every tick.

JVM tuning also affects tick stability

Garbage collection pauses inside the Java Virtual Machine are another frequent cause of tick spikes that get blamed on "server lag" when the real issue is memory management. Using tuned JVM flags reduces the length and frequency of full garbage collection pauses:

java -Xms6G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-jar paper.jar nogui

Notice that -Xms and -Xmx are set to the same value. Letting the heap resize dynamically forces the JVM to allocate memory mid-run, which itself causes tick stutters. Fixing the heap size removes that variable entirely.



RAM Allocation, View Distance and Tick Time

Throwing more RAM at a laggy world is one of the most persistent myths in Minecraft administration. Beyond a certain point, allocating excessive heap size to the JVM actually increases the length of garbage collection pauses, because the collector has more memory to scan. A modest, correctly sized heap paired with tuned GC flags almost always outperforms an oversized one.

The settings that genuinely move the needle on Minecraft server TPS are view-distance and simulation-distance, both defined in server.properties:

view-distance=8
simulation-distance=6
entity-broadcast-range-percentage=75
max-tick-time=60000
view-distanceChunks loaded (radius)Relative tick cost
6~113 chunksLow
10~317 chunksModerate
16~793 chunksHigh

Every loaded chunk carries a processing cost: block ticks, random ticks for crop growth and fire spread, mob spawning checks. Reducing view-distance and simulation-distance by even two or three units on a survival world with active players can recover several ticks per second without touching a single plugin. Mob caps and spawn-limits in the same file are worth reviewing too — a world with unchecked farms can silently push hundreds of entities through the tick loop every second.

For modded environments running on Forge or NeoForge, the same logic applies, but entity and tile-entity counts from complex machines (industrial mods, automation mods) tend to be the dominant cost rather than raw chunk count. Profiling which mod is responsible is covered in the next section.



Diagnosing Lag From the Console and Timings Reports

Before changing any setting, confirm what's actually happening. The console is the first place to look. A recurring message like the one below is a direct signal that the main thread missed its 50ms budget:

[Server thread/WARN]: Can't keep up! Is the server overloaded?
Running 2534ms behind, skipping 50 tick(s)

That single line means the world silently jumped forward, skipping ticks entirely to catch up. It's the clearest possible evidence of a Minecraft server TPS problem, and it always deserves investigation rather than being ignored.

Quick console checks

  • /tps — reports the rolling average over the last 1, 5 and 15 minutes on Paper and Spigot forks.
  • /forge tps — the equivalent for Forge-based modded instances.
  • /mspt — shows milliseconds per tick directly, more precise than TPS for spotting micro-lag.

Timings and profiler reports

A single TPS number tells you there's a problem, not where it lives. Paper's built-in timings and the spark profiler go further by breaking tick time down per plugin, per mod, and per world:

/timings on
# let it run for 5-10 minutes under normal load
/timings paste
/spark profiler start --timeout 300
/spark profiler stop

The resulting report ranks the exact methods and plugin hooks consuming main-thread time, expressed as a percentage of total tick duration. This is how you distinguish a JVM garbage collection issue, a bloated redstone contraption, an inefficient plugin event handler, or a mod-generated entity flood — instead of guessing.

A practical isolation routine

  1. Take a full backup before testing anything, so a bad config change is easy to revert.
  2. Run /timings or spark during a normal play session, not right after startup.
  3. Sort the report by main-thread percentage and identify the top three consumers.
  4. Disable or reconfigure one plugin or mod at a time, then re-run the profiler to confirm the impact.
  5. Re-check view-distance, simulation-distance and entity caps after each change, since they interact with everything else.

Keeping RCON access restricted to trusted admins and using a whitelist for the world also reduces the chance of griefing-driven lag machines (auto-clickers, TNT cannons, mob farms) being deployed without your knowledge. Regular automatic backups turn this whole diagnostic process from risky guesswork into a routine maintenance task.

If you manage your own instance through a control panel, the console and file manager in Pterodactyl VPS environments give direct access to the same log output and configuration files referenced above, which makes running this diagnostic routine considerably faster than digging through SSH sessions. For a broader overview of supported titles and their specific tuning quirks, the All our game servers section is a useful reference point.

For the authoritative technical reference on tick mechanics and game logic timing, the official wiki documentation is worth bookmarking: Source.



Stable Minecraft server TPS comes down to matching CPU clock speed, JVM tuning, and world settings to the actual load your players generate, then confirming every change with real console data instead of assumptions. Diagnose first, adjust one variable at a time, and keep a backup before every test — that discipline saves more ticks than any single setting ever will.



FAQ

Why does my Minecraft server TPS drop only when specific players are online?

It usually means those players are near expensive builds — mob farms, large redstone circuits, or item sorters. Run the spark profiler while they're active and check the entity count in that region; reducing spawn rates or splitting the farm often solves it.

Does allocating more RAM always fix low TPS?

No. Beyond the world's actual memory needs, extra heap size increases garbage collection pause length instead of helping. Set a fixed, reasonably sized heap with tuned G1GC flags rather than maximizing allocation blindly.

What's the fastest way to tell if a plugin is causing the lag?

Use /timings paste or the spark profiler during normal play, sort by main-thread percentage, then disable the top suspects one at a time and re-profile to confirm the drop in tick time.