Affects Version/s: Minecraft 1.12.2
Fix Version/s: Minecraft 1.13-pre6
This IS the same issue as the one described in
MC-63590, but that issue is already closed because it "works as intended". The error message given clearly says it's not intended.
I noticed the issue many times when working on my mod, and then I actually found the problem in code when trying to find the root cause of issue in other mod.
I will just copy the explanation I game in this issue, where I originally found the cause: https://github.com/asiekierka/FoamFix/issues/40#issuecomment-320440131.
The relevant decompiled code:
If the server tick time is more than 50ms on average for a longer amount of time, you get the "Can't keep up" messages. But it also means that this loop attempts to "fix" the issue by running many ticks at once before the message appears:
The message is shown only if the server is 2000 or more ms behind (40 or more ticks) and it's been more than 15 seconds since mast message.
But if the server is consistently lagging behind, then while the server attempts to run many ticks at once, it will get even more behind. If in that time it gets more than 60 seconds behind, which happens if it's already close to the 15 seconds behind and just about to show the next message, and the average tick time is >= 200ms (60000 / (15seconds*20TPS).
So the watchdog thread will kill the server if your average tick time is greater than 200ms (or in general timeout/(15*20))