Paper & Purpur Server Optimization: Fixing TPS Drops and Lag
Comprehensive guide to configuring chunk, entity, and mob tick limits to maintain a solid 20 TPS.
Verified against
- Minecraft
- 1.20.x – 1.21.x
- Engine
- Paper / Purpur
- Java
- 17 / 21
- Last checked
- 2026-09-13
Before you start
- A running Paper or Purpur server (it must have booted at least once)
- Access to the panel console or in-game operator permission
- Write access to the config/ folder in the file manager
As player counts grow or automated mob farms expand, TPS (Ticks Per Second) can drop below 20, leading to delayed block breaks, rubberbanding, and server lag.


Minecraft Purpur/Paper Cluster
Clodo Minecraft Panel Optimization Overview
Purpur engine, Aikar JVM arguments, and NVMe caching are active by default on the Clodo control panel.
| Setting | Which load it reduces | Trade-off |
|---|---|---|
| view-distance | Chunks loaded and sent per player | Players see less far |
| simulation-distance | Entity, redstone and growth ticking | Distant farms stall |
| despawn-ranges | Monsters kept in memory | Mob farms slow down |
| mob-spawn-range / limits | Spawned mobs, hence entity tick cost | Fewer natural spawns |
| network-compression-threshold | CPU spent compressing tiny packets | Slightly more bandwidth |
| sync-chunk-writes | Main thread waiting on disk | Higher risk on hard shutdown |
Diagnosing bottlenecks with the Spark profiler#
Before tweaking configs randomly, you must diagnose which plugin, entity, or chunk causes lag using Spark.
/spark profiler start --timeout 180
# 3 dakika sonra profil linki otomatik oluşturulur
/spark health --memoryInstall the Spark profiler
Downloads Spark from Modrinth into your plugins (or mods) folder. The version is picked to match your engine and Minecraft version.
- A compatible Spark build is downloaded from Modrinth
- After a restart, /spark profiler and /spark health become available
The server must be restarted for this change to take effect.
If you have a Clodo service you can apply these steps without touching a terminal. You always see the diff before anything is written.
Critical optimization parameters#
The settings below in your server's root config files govern most of the CPU cost. Change them one at a time and measure with /spark health; changing everything at once tells you nothing about which one helped.
entities:
spawning:
despawn-ranges:
monster:
soft: 28
hard: 96
ticks-per-spawn:
monster: 8
animal: 400
chunks:
auto-save-interval: 6000 # 5 dakika
max-auto-save-chunks-per-tick: 8| Config File & Parameter | Default | Recommended Value | Performance Impact |
|---|---|---|---|
| paper-world-defaults.yml > despawn-ranges.monster.hard | 128 | 96 (or 72) | Despawns distant mobs quickly, slashing entity overhead by 35%. |
| paper-world-defaults.yml > ticks-per-spawn.monster | 1 | 8 | Attempts mob spawning every 8 ticks rather than every tick. |
| paper-world-defaults.yml > auto-save-interval | 6000 | 12000 (10 min) | Eliminates disk I/O lag spikes caused by overly frequent world flushes. |
| spigot.yml > entity-tracking-range.players | 48 | 36 | Minimizes network packet processing across clients. |
server.properties: the quickest win#
Before touching any YAML file, review two values in server.properties. view-distance controls how many chunks the server loads and streams per player; simulation-distance controls how many chunks actually tick. The default 10/10 can double MSPT on its own once you pass roughly 20 players.
# Oyuncunun gordugu mesafe (chunk). 10 -> 8 gorsel olarak zor fark edilir.
view-distance=8
# Gercekten tick alan mesafe. Her zaman view-distance'tan kucuk veya esit olmali.
simulation-distance=6
# Bu esigin altindaki paketler sikistirilmaz; kucuk paketlerde CPU tasarrufu.
network-compression-threshold=256
# Chunk yazimi ana thread'i bekletmez. Ani kapanmada son saniyeler kaybolabilir.
sync-chunk-writes=falseApply view distance and chunk settings
Writes the server.properties values from this guide to your server. Your other settings are left untouched; only the keys below change.
- view-distance = 8 (fewer chunks loaded per player)
- simulation-distance = 6 (narrows entity and redstone ticking)
- network-compression-threshold = 256 (CPU/bandwidth balance)
- sync-chunk-writes = false (moves disk writes off the main thread)
The server must be restarted for this change to take effect.
If you have a Clodo service you can apply these steps without touching a terminal. You always see the diff before anything is written.
Proper Java startup arguments (Aikar's Flags)#
Default Java garbage collection is ill-suited for Minecraft, causing severe 'Stop-The-World' pauses where the entire server freezes. Aikar's Flags tune G1GC parameters to compress pauses down to imperceptible milliseconds.
java -Xms12G -Xmx12G -XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 \
-XX:G1MaxNewSizePercent=40 \
-XX:G1ReservePercent=20 \
-XX:G1HeapWastePercent=5 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:SurvivorRatio=32 \
-jar purpur.jar --noguiCommon mistakes and fixes#
Implementation method comparison#
How to Implement This?
Clodo Control Panel Quick Method
1-Click Optimized Engine & Live MetricsAikar's Flags are pre-configured out of the box; Purpur engine and Spark can be enabled in 1-click.
Step-by-step Execution:
- 1Switch the engine to Purpur on the 'Version & Engine' tab; no need to download and upload a jar by hand.
- 2Startup flags ship preconfigured; edit the startup command on the same tab if you want to change the Aikar parameters from this guide.
- 3Edit configuration files in-browser without SFTP downloads.
- 4Monitor live CPU, RAM and disk usage curves in real-time.
Was this guide helpful?
Feedback goes straight to the team that maintains this guide.
Related Guides
Minecraft Plugin & Mod Installation Guide
Step-by-step instructions for installing plugins and mods on Spigot, Paper, Purpur, and Fabric.
Building a Velocity Proxy Network & Enabling Bedrock Crossplay with Geyser
Modern proxy networking with Velocity and bridging mobile/console players via Geyser and Floodgate.

