TPSPerformanceOptimizationPaper6 min read

Optimize your server's TPS

Improve server performance by tuning Paper configuration, view distance, and entity limits.


Understanding TPS

TPS (Ticks Per Second) measures server performance. The target is 20 TPS. Below 18 TPS, players notice lag.

Check your TPS:

terminal
tps

Output: TPS from last 1m, 5m, 15m: 20.0, 19.98, 19.95

Step 1: Use Paper or Purpur

If you're running Vanilla or Spigot, switch to Paper (or Purpur) for significant performance improvements out of the box.

Change your server type in the Startup tab at panel.baires.host.

Step 2: Optimize view and simulation distance

Edit server.properties:

properties
view-distance=7
simulation-distance=5

Lower values = better performance. Players can still see far with client-side render distance.

Step 3: Paper configuration

Edit config/paper-global.yml:

yaml
chunk-system:
  gen-parallelism: default
  io-threads: -1
  worker-threads: -1

Edit config/paper-world-defaults.yml:

yaml
chunks:
  auto-save-interval: 6000
  max-auto-save-chunks-per-tick: 8
  delay-chunk-unloads-by: 10s

entities:
  spawning:
    monster-spawn-range: 6
    
environment:
  optimize-explosions: true

hopper:
  disable-move-event: true

tick-rates:
  mob-spawner: 2
  sensor:
    villager:
      secondarypoisensor: 80
  behavior:
    villager:
      validatenearbypoi: -1

Step 4: Limit entities

Too many entities (mobs, items, vehicles) kill TPS.

In bukkit.yml:

yaml
spawn-limits:
  monsters: 50
  animals: 8
  water-animals: 3
  water-ambient: 2
  water-underground-creature: 3
  axolotls: 3
  ambient: 1

ticks-per:
  monster-spawns: 4
  animal-spawns: 400
  water-spawns: 400

Step 5: Pre-generate chunks

Chunk generation is expensive. Pre-generate your world:

  1. Install Chunky plugin
  2. Run:
terminal
chunky radius 5000
chunky start

This pre-generates chunks in a 5000-block radius, eliminating generation lag during gameplay.

Step 6: Optimize plugins

  • Remove unused plugins
  • Replace heavy plugins with lighter alternatives
  • Use Spark profiler to identify slow plugins:
terminal
spark profiler start
# Wait 5 minutes
spark profiler stop

Review the generated report to find performance bottlenecks.

Quick wins checklist

  • Switch to Paper/Purpur
  • Lower view-distance to 7-8
  • Lower simulation-distance to 4-5
  • Reduce mob spawn limits
  • Pre-generate world chunks
  • Remove unused plugins
  • Disable hopper move events
  • Optimize entity tick rates

Tips

  • Use Spark (spark.lucko.me) for detailed performance profiling
  • Monitor TPS over time, not just instant readings
  • Restart the server every 12-24 hours to clear memory
  • Consider splitting worlds across multiple servers with Velocity if one server can't handle the load

Was this guide helpful?