Last updated 2016-04-04 Spigot has a lot of performance improvements disabled by default, as they often alter the server so it no longer replicates vanilla behavior. This guide is supposed to help you tweak the settings for optimal performance while understanding what you are actually changing. If you do not understand a setting I mention here, don't change it. If you are curious, reply to the thread (make sure to @Tag me) and ask me what it does. If you are still having issues with performance, take timings (2-5 minutes) and reply here, or make a new thread. I'll list all the config values you can consider tuning to improve performance while doing my best to explain what the setting does and when you do/don't want to change it. The guide is currently written for 1.9. Most options appear in 1.8 as well. If they don't, just go to the next option. 1. paper.yml You will need Paper, a fork of Spigot, to have this file available. WARNING: Paper is an unofficial version of SpigotMC and not officially supported. It is slightly less stable, but cutting edge / fast. If you get issues while using Paper, they should be reported on Paper's issue tracker, not to SpigotMC. Additionally, linking to any Paper-related projects in replies to this thread is NOT allowed and will be removed / get the thread locked! optimize-explosions Default: false Suggested: true mob-spawner-tick-rate Default: 1 Suggested: 2 - 3 disable-chest-cat-detection Default: false Suggested: true use-hopper-check Default: false Suggested: true container-update-tick-rate Default: 1 Suggested: 3 - 4 queue-light-updates Default: false Suggested: true fire-physics-event-for-redstone Default: true Suggested: false grass-spread-tick-rate Default: 1 Suggested: 2 - 4 2. spigot.yml late-bind Default: false Suggested: true mob-spawn-range Default: 4 Suggested: 3 entity-activation-range Default: animals:32, monsters:32, misc:16 Suggested: animals:6, monsters:16, misc:2 hopper-transfer, hopper-check, hopper-amount Default: transfer:8, check:8, amount:1 Suggested: transfer:24, check:24, amount:3 max-entity-collisions Default: 8 Suggested: 1 - 2 merge-radius Default: item:2.5, exp:3.0 Suggested: item:3.5, exp:6.0 view-distance Default: 10 Suggested: 3 - 5 3. bukkit.yml spawn-limits Default: monsters:70, animals:15, water-animals:5, ambient:15 Suggested: monsters:50, animals:10, water-animals:3, ambient:4 chunk-gc Default: period-in-ticks:600, load-threshold:0 Suggested: period-in-ticks:300, load-threshold:300 ticks-per.monster-spawns Default: 1 Suggested: 2 - 5 4. server.properties network-compression-threshold Default: 256 Suggested (standalone server): 512 Suggested (behind local Waterfall/BungeeCord): -1 5. Java & Launch flags Always make sure you're on the latest version of Java! (Currently 8) Some features are only present in Java 8, as well as being more optimized. If you for some reason are stuck on Java 7, you will need to add the -XX:MaxPermSize=128M flag to your launch script. Some people will tell you that launch flags are placebo and you should stick to just -Xmx. This is for a large part true. However, the garbage collector can play a large role in performance and memory usage. The best way to tweak the garbage collector to our needs is using flags. @Aikar has put a lot of time and effort into researching and testing different garbage collection setups, and recommends the following flags: Code (Text): java -Xmx8G -Xms8G -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=45 -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=50 -XX:+AggressiveOpts -jar spigot.jar Flags are explained in @Aikar's article here. Large pages can also improve memory performance a lot: Code (Text): -XX:LargePageSizeInBytes=2M -XX:+UseLargePages -XX:+UseLargePagesInMetaspace However, this requires configuration of your Linux system and can potentially break it. You should only attempt setting up large pages if you understand what they are and how to set them up. @Aikar's recommendation on finding the right values to set: Note: -XX:+UseLargePagesInMetaspace is Java 8 only! You can also consider a plugin like ClearLagg if entities are your problem and none of the above settings are working for you. I do not recommend using the automatic entity clearing provided by ClearLagg. Disable them when you get the plugin. You're interested in features like mob-range and chunk-entity-limiter. And you're done! If you are still experiencing issues, feel free to take timings (2 - 5 minutes) and post them here, or create a new thread.