Best Minecraft Server Settings for Maximum Performance
JVM Flags — The Foundation of Performance
Your server's Java startup flags are the single most impactful configuration for performance. Use Aikar's flags — the community standard: '-Xms4G -Xmx4G -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'. Set these in your control panel's Startup tab.
server.properties — Core Gameplay Settings
view-distance: 8-10 for most servers. Higher values exponentially increase chunk loading. simulation-distance: 6-8 — controls entity and block tick distance. max-players: Match your plan's capacity. network-compression-threshold: 256 (default) — lower values compress more but use more CPU. Set to -1 to disable compression on high-CPU plans. online-mode: true (always — prevents cracked clients). spawn-protection: 16 blocks minimum. allow-flight: false unless your server needs it for abilities.
bukkit.yml — Tick and Entity Management
spawn-limits: Reduce monsters from 70 to 50, animals from 10 to 8, water-animals from 5 to 3 to cut entity processing by 30%. ticks-per: Set monster-spawns to 10 (default is 1 — this drastically reduces spawn frequency). autosave: Increase interval to 6000 ticks (5 minutes) from default 6000 to reduce IO spikes. chunk-gc.period-in-ticks: 400 (unloads unused chunks faster). Set 'period-in-ticks' to 400 so chunks not near players get unloaded quickly.
spigot.yml — Optimizing Entity Behavior
entity-activation-range: Increase these to reduce mob AI processing only near players. Recommended: animals: 32, monsters: 32, raiders: 48, misc: 16, water: 16, villagers: 32, flying-monsters: 32. entity-tracking-range: players: 64, animals: 48, monsters: 48, misc: 32, other: 64. ticks-per: hopper-transfer: 16 (reduces hopper lag dramatically), hopper-check: 16. merge-radius: item: 4.0, exp: 6.0 — this merges nearby dropped items to reduce entity count.
paper-world.yml — Advanced Optimization
delay-chunk-unloads-by: 10s — keeps chunks in memory briefly after players leave for smoother returns. max-auto-save-chunks-per-tick: 24 — reduces save spikes. prevent-moving-into-unloaded-chunks: true. use-faster-eigencraft-redstone: true — faster redstone processing. fix-climbing-bypassing-cramming-rule: true. arm-stand-entity-lookups: false — reduces arm stand lag. all-chunks-are-slime-chunks: false. disable-teleportation-suffocation-check: true. per-player-mob-spawns: true — distributes mob caps per player for more natural spawns.
Timings and Monitoring
Run '/timings paste' after your server has been running for at least 30 minutes with players online. This generates a report showing exactly what's consuming tick time. Look for: plugins using >5% of tick, tile entities (hoppers) consuming >10%, and chunk loads >50/second. Install Spark profiler for deeper analysis — '/spark profiler --timeout 300' captures a 5-minute performance profile. Review reports after every plugin addition or player count increase.
FAQ
Related Tutorials
From the Blog
Was this guide helpful?
Join our Discord for more guides and direct help from our engineering team.
