Staff Edit: The author of this guide has passed away, and will not be receiving any more updates. For a new and updated guide, please see https://www.spigotmc.org/threads/283181/ For an updated guide on Aikar's MC JVM Flags, see https://mcflags.emc.gs Spoiler: Outdated Info Last updated 2016-04-05 Spoiler: Outdated Info Paper 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 optimize-explosions Default: false Suggested: true mob-spawner-tick-rate Default: 1 Suggested: 20 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 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. taco.yml taco.yml is the configuration file generated by TacoSpigot TacoSpigot is @Techcable's fork of Paper with some additional patches that sometimes are still in earlier testing. Taco frequently merges changes into Paper. The settings listed here may already be in paper.yml! If one of these settings seem like a major benefit to your server, check if paper.yml has this setting already before switching to TacoSpigot. armor-stand.optimize-movement Default: false Suggested: true grass-ignores-light Default: false Suggested: true hopper.fire-InventoryMoveItemEvent Default: true Suggested: false hopper.push-based Default: true Suggested: true 6. 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: 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 paperclip.jar Flags are explained in @Aikar's article here. Large pages can also improve memory performance a lot: Code: -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.