Performance
What actually costs time, and how to find out instead of guessing.
Game logic runs on a single thread at 20 ticks per second. Every tick has 50 ms to do its work. If it needs more, the server falls behind and everything in the game slows down with it.
Measure before you change anything
Config values changed on a hunch are how a working server becomes a broken one. Get a timings report first.
Measuring first
statusPrints memory use, player count, loaded chunks and the current TPS. TPS at 20 and load under 100 % means the server is fine and your problem is elsewhere, usually the network.
timings on
timings pasteLet it run for a few minutes of normal play, then paste. The report ranks what consumed tick time, per plugin and per task. This is the difference between fixing a problem and rearranging config values.
The usual culprits
Memory
Loaded chunks dominate memory use. The limits in pocketmine.yml under memory decide when the
server starts trimming caches and when it refuses to load more. Raising the limit on a machine that
does not have the RAM only moves the crash later; unloading worlds nobody is in actually fixes it.
Hardware
Single thread performance is what matters, not core count. A CPU with high per core speed beats one with more, slower cores every time. Chunk generation and network handling do use separate threads, so cores are not wasted, but the tick loop itself will never spread across them.
Disk matters more than people expect: chunk saves are frequent, and a slow disk shows up as periodic tick spikes.
Before asking for help
Bring the timings paste and the output of status. "The server lags" without either is a
question nobody can answer.