Check out how you can optimize your server.
Guide available at:
Decreasing TickRate per Second
You can lower your TickSpeed using this command inside your server:
/gamerule randomTickSpeed 2
AlwaysSetupTerrain
OffThread
Increases FPS significantly, but can also cause a rendering delay.
AlwaysSetupTerrainOffThread: true
Decreasing the Viewing Distance
It can be found in the server settings, look for "view distance" and set it to something smaller like 5 or 6.
view_distance: 5
Using Anti-Lag Mods
Using Anti-Lag Mods can be dangerous, but it can also be used to avoid massive lag on Modded Servers.
Recommended Mods:
RandomPatches
BetterFPS
FastFurnace
FastWorkBench
Pre-Generation of the World
Chunk pre-generation is a useful technique for servers to help reduce server load in the future. In Minecraft, chunks are generated as players walk through the world to new places.
By pre-generating the chunks, your world is already built and the server just has to load the data instead of creating it. It's recommended to only do this with you online, as this causes high latency and resource usage while running, but reduces the load afterward.
The world is dynamically generated as you play, which means that the full world is not created when you start playing, but generates more and more as you play, creating more lag.
How can I pre-generate my world?
1. install mod Chunk-Pregenerator on your server and restart.
2. Stand in the center of the world you want to pre-spawn (usually 0,0, but may want to do this based on where your server spawn is)
/pregen gen startradius SQUARE 0 0 100
This command will spawn everything within a 100 chunk radius of your location. You can modify the radius size by increasing the Z variable.
The mod will send updates about each generated chunk. Once completed, the pre-generation will be displayed with the amount of chunks generated.