Back to Blog
MinecraftOctober 1, 20247 min read

The Ultimate Minecraft 1.21 Server Performance & TPS Optimization Guide

A deep dive into JVM garbage collection flags, Paper configuration tweaks, entity tick throttling, and asynchronous chunk loading to achieve flawless 20.0 TPS under heavy load.

T
Tariq Habibi
Lead Systems Architect
MinecraftPaperMCPerformanceOptimizationSysadmin
Minecraft • 7 min read

The Ultimate Minecraft 1.21 Server Performance & TPS Optimization Guide

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.