Description
Tick Watchdog
Summary
I was tired of the "server running behind" messages not offering any other useful information. This mod provides said useful information by dumping it into a text file and printing a notification in console.
What Tick Watchdog Does
Every server tick is timed, and when a tick takes longer than your configured threshold:
- A thread dump is written to
logs/tickwatchdog/dump-YYYY-MM-DD_HH-mm-ss.txt - The server thread is shown first, with mod package annotations to help identify culprits
- Lock and monitor info is included
- Deadlock detection runs automatically
- Rolling TPS averages(1m / 5m / 15m) are logged alongside the dump
A configurable cooldown prevents log spam during sustained lag events.
Reading a Dump
Open the dump file and look at the SERVER THREAD section first. Stack frames are annotated with their origin:
>>> SERVER THREAD (RUNNABLE)
at net.minecraft.world.level.chunk.ChunkSource.tick(...) [Minecraft]
at somemod.world.TickHandler.onTick(...) [Mod? (somemod.*)]
If a mod class appears near the top of the stack, it's likely responsible for the spike. The 1m vs 15m TPS gap is also useful as a large difference points to something event-triggered rather than a steady per-tick cost
Configuration
Created automatically at config/tickwatchdog.txt on first launch.
Default configuration is as follows:
# Trigger a thread dump if a tick takes longer than this (ms)
# Normal tick = 50ms. 100ms = ~10 TPS or worse.
threshold_ms=100
# Minimum seconds between dumps (prevents log spam during sustained lag)
cooldown_seconds=30
# Log rolling TPS averages to console periodically
log_tps=true
# How often to log TPS (seconds)
tps_log_interval_seconds=60


