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.
Проверено на
- Minecraft
- 1.20.x – 1.21.x
- Engine
- Paper / Purpur
- Java
- 17 / 21
- Последняя проверка
- 2026-09-13
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
Чтобы изменение вступило в силу, сервер нужно перезапустить.
Если у вас есть сервис Clodo, эти шаги можно применить без терминала. Перед записью вы всегда видите изменения.
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)
Чтобы изменение вступило в силу, сервер нужно перезапустить.
Если у вас есть сервис Clodo, эти шаги можно применить без терминала. Перед записью вы всегда видите изменения.
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#
Как это сделать?
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.
Пошагово:
- 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.
Было ли руководство полезным?
Отзыв сразу попадает команде, которая ведёт это руководство.
Похожие руководства
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.

