Timed out means the client stopped hearing from the server. That happens for two completely different reasons, and the fix for one does nothing for the other — so the first job is telling them apart.
The two causes
| Server froze | Network dropped | |
|---|---|---|
| Console during the event | Silent, then Can't keep up! | Normal, then disconnect messages |
| Who is affected | Everyone, together | Everyone, or one region |
| Server state after | Still running, catching up | Still running, untouched |
| Rejoin behaviour | Works once it catches up | Works immediately |
What to do
- Look at the console timestamps
A gap with nothing logged, followed by
Can't keep up! Did the system time change, or is the server overloaded?, means the server stalled. Everybody's client gave up waiting during that gap. - Check whether the server itself noticed
If the console shows normal activity right up to the disconnects, the server was fine and the path to it was not. That is a different investigation entirely.
- Look for the cause of the stall
World saves on a large world, a chunk-generating command, a plugin doing something heavy on the main thread. Profile during the event, not after.
- Check whether it correlates with a schedule
Disconnects at the same minute every hour are a scheduled task. That is the easiest possible version of this problem and it is worth ruling in early.
Increasing the server's timeout tolerance means players wait longer before being disconnected — during which the server is still frozen and the game is still unplayable. It converts a clean disconnect into a long, confusing hang. Fix the stall.
If it is always the same person while everyone else is fine, the problem is on their side: their connection, their Wi-Fi, or a client mod. Have them try mobile data for two minutes — it answers the question faster than any amount of server-side checking.
The console runs for an hour with no logging gaps and no Can't keep up! lines, and nobody is disconnected.