Performance Guide
BusyTab is light by design. It has no database and no per-tick work beyond measuring tick time
for %busytab_tps%. Almost all of its cost is placeholder resolution on each refresh.
What a refresh does
Every refresh-interval, for every online player, BusyTab:
- Replaces placeholders in every header and footer line, the name format and the nametag.
- Sends the header, footer and tab list name to that player.
- Updates the player's scoreboard team, but only when their position, prefix, suffix or name color actually changed.
Step 1 runs on BusyTab's own background thread, not on the server's tick threads.
Tuning
- Keep
refresh-intervalat5sor higher on large servers. The work grows with players multiplied by placeholders.1swith 200 players and ten placeholders is 2,000 lookups a second. - Use built-in placeholders where you can.
%vault_rank%,%luckperms_prefix%and the other built-in placeholders skip PlaceholderAPI. - Avoid expensive PlaceholderAPI expansions in the tab list: anything that queries a database or the web on each call. If the tab list updates late, a slow placeholder is the usual cause.
- Keep changing values out of nametags. A nametag that changes on every refresh (a ping or a health value, for example) sends a team update to every player each time. A rank or AFK tag changes rarely and costs almost nothing.
- Trim the header and footer. Each line is one more round of placeholder replacement per player.
Signs the interval is too low
- The tab list updates noticeably later than the interval you set.
- Values in the header and footer lag behind for some players.
Raise refresh-interval and run /busytab reload.