Performance and Throttling
Previous: Diagnostics and Troubleshooting · Next: FAQ
QS itself is lightweight, but high-frequency passives and debug output can drag performance if misused. This page is your pre-launch checklist.
⚡ High-frequency passives must be throttled
Passives like ON_DAMAGED / ON_JUMP / ON_BLOCK_BREAK / ON_SNEAK / TICK can fire several times per second. You must give them a cooldown_ms (at the passive-entry level) or a skill cooldown, or they'll fire in a burst and flood both the server and the chat box.
passive_triggers:
- type: ON_BLOCK_BREAK
id: miner_buff
cooldown_ms: 500 # required, otherwise it fires on every block mined| Trigger | Risk | Recommendation |
|---|---|---|
ON_DAMAGED | Burst fire on continuous hits | Throttle with cooldown_ms |
ON_JUMP / ON_SNEAK | Player spam | Throttle with cooldown_ms |
ON_BLOCK_BREAK | Flood from rapid mining | Throttle with cooldown_ms |
TICK | Runs every interval | See the tick config below |
ON_LOW_HEALTH | Low | Edge-triggered, fires only on threshold crossing, naturally non-flooding |
⏲️ TICK passive throttling
The period of TICK passives is controlled by config:
| Config | Default | Description |
|---|---|---|
passive.tick_interval_ticks | 20 (= 1 second) | Check interval for TICK passives |
When there is no TICK passive at all on the server, the corresponding polling task idles and adds no overhead — feel free to keep the default.
🖥️ Actionbar refresh
| Config | Default | Description |
|---|---|---|
actionbar.refresh_ticks | 10 | Actionbar refresh interval |
actionbar.hide_when_empty_slot | — | Don't refresh the actionbar when the slot is empty, avoiding flooding the screen with blanks |
Raising refresh_ticks lowers overhead but updates a bit more slowly; balance as you see fit.
💾 Persistence and in-memory state
| State | Storage | On relog |
|---|---|---|
| Binary cooldown | Persisted | Retained — prevents refreshing cooldown by relogging |
| Charges | In-memory | Reset on relog |
| Toggle switch | In-memory | Reset on relog |
Charges / toggle are in-memory; a relogging player returns to the initial state. Persisting cooldowns is deliberate, to prevent the "relog clears CD" exploit.
🌉 Bridge and startup
- The Mythic bridge's
syncruns deferred, avoiding lag from every plugin racing to load at startup; - The
AUTOmode fallback applies only to missing skills — an existing same-named MM skill is never overwritten and adds no extra overhead.
🐞 Debug overhead
debug: trueprints a per-stage trace; under high-frequency triggers the flooding is severe — for troubleshooting only, off in production.- Once you've finished troubleshooting a skill, remember to turn its
debugoff — don't enable it server-wide.
See Diagnostics and Troubleshooting §7.
✅ Pre-launch checklist
- [ ] Every high-frequency passive has a
cooldown_msor skillcooldown - [ ] No leftover
debug: true - [ ]
tick_interval_ticks/actionbar.refresh_ticksare sensible values - [ ] Players can't refresh cooldowns by relogging (cooldowns persist — correct by default)
Read next
- Diagnostics and Troubleshooting — How to use the debug trace
- Server Owner's Guide → Passive Skills — The 11 passive types and throttling details
- FAQ — Frequent questions