promotional bannermobile promotional banner
premium banner
Configurable watchdog that captures thread dumps when server is suffering from TPS lag

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