Direct answer
Joining players can trigger player-data reads, spawn chunk sends, scoreboards and multiple plugin login handlers all at once.
How to check it
- Observe a typical busy login window and compare spark profiles before and during a group join.
- Check whether stalls are associated with disk reads, spawn loading, login authentication or a particular plugin’s join handler.
- Look for delayed joins from the proxy separately from backend ticks; a proxy bottleneck will not necessarily show as backend MSPT.
Example: A spike only when twenty users join suggests player-data, chunk sending or login handlers; a persistent spike after they finish joining calls for profiling the live gameplay workload.
What to change
Preload the main spawn safely and reduce unnecessary synchronous tasks in plugins that run on join. A virtual queue or rate limit may be appropriate for large events, but is not a substitute for fixing a blocking handler.
Software and version notes
Do not disable authentication or secure forwarding to speed up logins. Caches and preloading can use more RAM, so monitor memory alongside join latency.
Verify the result
Compare login completion time, peak MSPT and any server-side exceptions with the same size join burst.