Skip to main content
Performance

Minecraft Server Optimization Guide

Tune your Minecraft server for stable TPS, Paper config, view distance, mob caps, JVM flags and the real bottlenecks.

11 min read10 sectionsJava & Bedrock

If your Minecraft server stutters, drops TPS, or struggles at 30 players when it should hold 100, the cause is almost always one of five things: too many entities, too many chunks loaded, GC pauses, a slow disk, or a CPU that can't keep up. Here's how to fix each.

1. Measure before you tune

Install Spark (spark.lucko.me). Run:

/spark profiler start --thread main
# wait through a slow period
/spark profiler stop

The flame graph tells you exactly which class is eating the main thread.

2. Paper config, the must-change knobs

In config/paper-global.yml and config/paper-world-defaults.yml:

# paper-world-defaults.yml
chunks:
  max-auto-save-chunks-per-tick: 24
entities:
  spawning:
    per-player-mob-spawns: true
    spawn-limits:
      monster: 50
      animal: 6
      water-animal: 3
collisions:
  max-entity-collisions: 2

per-player-mob-spawns is the single biggest win on most servers, it stops the global mob cap from being eaten by one AFK player.

3. View distance vs simulation distance

In server.properties:

view-distance=8
simulation-distance=6

view-distance = how many chunks the client sees. simulation-distance = how many chunks tick (mobs, redstone, growth). Simulation distance is the expensive one. 6 is the sweet spot for most servers.

4. Entity caps and item merging

Items dropping in massive farms kill TPS. In Paper config:

entities:
  spawning:
    despawn-ranges:
      monster: {soft: 24, hard: 64}
  item-merge-radius: 4.0
  exp-merge-radius: 4.0

5. Redstone

If a single redstone farm tanks the whole server, install Alternate Current (a faster redstone implementation). It's a server jar plugin, drop in and forget.

6. JVM flags, Aikar's flags

The community-standard JVM flags for any modern Paper server:

java -Xms8G -Xmx8G \
  -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:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \
  -Daikars.new.flags=true \
  -jar paper.jar nogui

Set Xms = Xmx. Don't allocate more than 50% of system RAM.

7. Disk and chunks

Pre-generate the world to avoid live chunk-gen lag:

/chunky world world
/chunky radius 5000
/chunky start

Use Chunky at server startup before opening to players. Saves enormous amounts of mid-play stutter.

8. The plugins that always need tuning

  • EssentialsX: disable per-player UUID lookups in config.yml.
  • CoreProtect: on MySQL, schedule purges, see CoreProtect guide.
  • WorldGuard: avoid global flags on huge worlds.
  • MythicMobs: avoid skills with ~onTimer shorter than 20 ticks.

9. The 5 quick wins checklist

  1. Switch to Paper if you're on Spigot or vanilla.
  2. Set simulation-distance: 6.
  3. Enable per-player-mob-spawns: true.
  4. Apply Aikar's flags.
  5. Pre-generate world borders with Chunky.

Prefer a server that's already tuned for this? Astroworld MC runs a hand-optimised Paper stack with custom plugins so you can just log in and play.

Questions about Minecraft Server Optimization

What exactly is Minecraft Server Optimization doing here?

If your Minecraft server stutters, drops TPS, or struggles at 30 players when it should hold 100, the cause is almost always one of five things: too many entities, too many chunks loaded, GC pauses, a slow disk, or a CPU that can't keep up.

How do you begin Minecraft Server Optimization?

Switch to Paper if you're on Spigot or vanilla. Set simulation-distance: 6.

Which file does Minecraft Server Optimization change?

In config/paper-global.yml and config/paper-world-defaults.yml: per-player-mob-spawns is the single biggest win on most servers, it stops the global mob cap from being eaten by one AFK player.

What should you avoid while doing Minecraft Server Optimization?

Pre-generate the world to avoid live chunk-gen lag: Use Chunky at server startup before opening to players.

Minecraft Server Optimization Guide: Tune your Minecraft server for stable TPS, Paper config, view distance, mob caps, JVM flags and the real bottlenecks.
Minecraft Server Optimization Guide, from the Performance guides on Astroworld.

Blocks and items in this guide

Redstone in MinecraftRedstone

Redstone is named in the Minecraft Server Optimization guide above. Look them up in the item database.

More guides on this site

More Performance Guides

Related Tools & Databases