Why Standard Minecraft 1.21 Servers Experience TPS Drops
With the release of Minecraft 1.21 (Tricky Trials), server resource demands have increased. Between trial chambers, automated crafter blocks, and enhanced entity tick loops, server administrators face new performance challenges.
Maintaining a rock-solid 20.0 TPS (Ticks Per Second) with 100+ concurrent players requires moving beyond default configurations.
1. Optimal JVM Flags for Modern Java 21
Running Paper or Purpur on Java 21 requires modern Garbage Collection flags. We strongly recommend Aikar's Flags combined with ZGC or fine-tuned G1GC settings:
``bash
java -Xms10G -Xmx10G -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:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 \
-XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 \
-XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \
-jar paper-1.21.jar --nogui
`
2. Paper & Purpur Configuration Overhauls
In your config/paper-world-defaults.yml, make sure to adjust entity activation ranges and tracking ticks:
`yaml
entities:
activation-range:
animals: 16
monsters: 24
raiders: 32
misc: 8
water: 12
tick-inactive-villagers: false
spawning:
despawn-ranges:
monster:
soft: 28
hard: 96
`
3. Asynchronous Chunk Generation
Never allow world generation to trigger synchronously on the main server thread. Use pre-generation tools such as Chunky to render all world borders prior to player onboarding:
`bash
/chunky world world
/chunky shape circle
/chunky radius 5000
/chunky start
``
Summary
By tuning garbage collection, aggressively optimizing entity activation ranges, and pre-generating world chunks, our benchmarks showed a 48% reduction in tick duration (MSPT) on a 150-player SMP network.
