How to Fix 'Can't Keep Up' on a Minecraft Server
Learn why your Minecraft server says 'Can't keep up! Is the server overloaded?' and how to fix it with tick optimisation, JVM flags and plugin audits.
What Does "Can't Keep Up" Mean?
When your Minecraft server logs print Can't keep up! Is the server overloaded? Running Xms behind, it means the server tick loop is falling behind the target of 50 milliseconds per tick (20 TPS). Every tick that takes longer than 50 ms pushes the server further behind real time, causing block lag, delayed chat and rubber-banding for players.
The message itself is a warning, not a crash. Your server keeps running, but players feel the impact immediately. Understanding why your minecraft server can't keep up is the first step toward fixing it.
Common Causes
1. Too Many Entities
Entities, mobs, items on the ground, minecarts, armor stands, are the single biggest performance drain. Each entity must be ticked every server tick. Large animal farms, uncleared mob grinders and thousands of dropped items all stack up.
- Run
/paper entity listor install Spark and run/spark tpsto see entity counts per chunk. - Set entity limits in
paper-world-defaults.ymlunderspawn-limits. Reducemonsters,animalsandambientto sane values (e.g. 50, 8, 1). - Enable
per-player-mob-spawns: trueinpaper-world-defaults.ymlso the mob cap is split per player instead of being global.
2. Expensive Plugins
Poorly written plugins can consume entire ticks. Use Spark to profile your server and identify which plugins are eating the most CPU time. Common offenders include custom enchant plugins that fire on every damage event, world-editing scripts that run synchronously, and anti-cheat plugins with aggressive checks.
3. Insufficient RAM or Bad JVM Flags
If your server is garbage-collecting aggressively because you allocated too little RAM, every GC pause adds milliseconds to tick time. Conversely, allocating too much RAM without proper G1GC tuning causes long GC pauses.
Use Aikar's recommended flags for Paper 1.21+:
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar paper.jar nogui
4. View Distance and Simulation Distance
High view distance forces the server to load and tick more chunks. In server.properties, set view-distance=8 and simulation-distance=6 as a starting point. You can raise these once you confirm your server handles the load.
Step-by-Step Fix
- Install Spark and run
/spark profiler start. Let it record for 5 minutes during peak load, then/spark profiler stop. Examine the report for hot methods. - Check entity counts with
/spark tpsand/paper entity list. Kill excess entities with/kill @e[type=item]as an immediate measure. - Review your JVM flags. Switch to Aikar's flags if you have not already.
- Lower
view-distanceandsimulation-distanceinserver.properties. - Audit plugins one by one: disable half, check TPS, then narrow down the culprit with binary search.
- If you use a world pre-generator, make sure it has finished. Generating new chunks during gameplay is one of the most expensive operations.
If your minecraft server can't keep up even after these changes, your hardware may be the bottleneck. Minecraft is single-threaded for most tick work, so raw single-core speed matters more than core count. See also our guide on fixing server lag for more in-depth optimisation and our guide on diagnosing TPS drops.
Need reliable hosting that handles these issues out of the box? Astroworld Hosting runs optimised Paper servers on NVMe SSDs with 24/7 support.