
Stressmark
Real-time server performance grading and stress testing for Minecraft servers. Spawn fake players, monitor key metrics, and discover exactly how many players your hardware can handle.
- Загрузки
- 2K
- Подписчики
- 8
- Обновлён
- 22 июня 2026 г.
- Лицензия
- Apache-2.0
Опубликован 9 февраля 2026 г.
Stressmark
Know your server's true limits.
Stressmark is a server-side mod that helps you understand exactly what your Minecraft server can handle. Whether you're preparing for a big event, choosing hosting specs, or just curious about your hardware's performance, Stressmark gives you the answers.
Features
Performance Dashboard
Get an instant overview of your server's health with a single command:
- TPS (Ticks Per Second) — Is your server keeping up?
- Memory Usage — How much RAM is being used vs available
- CPU Load — Current processor utilization
- Disk I/O — Storage read/write performance
- JVM Stats — Garbage collection and uptime info
Performance Grading
No more guessing if your server is "good enough". Stressmark calculates an overall performance grade based on multiple metrics:
- 🟢 Exceptional — Your server is running flawlessly
- 🟢 Good — Solid performance, no concerns
- 🟡 Fair — Playable, but room for improvement
- 🟠 Poor — Players will notice lag
- 🔴 Critical — Immediate attention needed
Stress Testing
The real magic: spawn fake players to stress test your server and find its breaking point.
- Spawn any number of bots — Start with 10, scale up to hundreds
- Realistic movement — Bots fly in patterns, loading chunks as they go
- Adjustable speed — Control how aggressively bots move and load chunks
- Live monitoring — Watch performance metrics change in real-time as load increases
- Safe testing — Bots are in spectator mode and don't affect gameplay
Player Capacity Estimation
Based on your benchmark results, Stressmark estimates how many real players your server can comfortably support.
Commands
| Command | What it does |
|---|---|
/benchmark |
Quick performance overview |
/benchmark detailed |
Full metrics report |
/benchmark stress start <count> |
Spawn stress test bots |
/benchmark stress stop |
Remove all bots |
/benchmark stress status |
Check current stress test |
Use Cases
- Server Admins — Find out if your hardware can handle your player base
- Hosting Comparisons — Benchmark different providers with real data
- Event Planning — Test capacity before big server events
- Optimization — Measure the impact of config changes and plugins
- Troubleshooting — Identify performance bottlenecks
Compatibility
- Works on Fabric and NeoForge
- Server-side only (no client installation needed)
- Works on dedicated servers
Requirements
- Operator permissions to run commands
- Java 21
Ченджлог
1.4.0Релиз1.21.11 · 22 июня 2026 г.
New Features
- Intelligent stress test report - When a stress test ends, the recap now opens with a clear verdict (
PASS/WARN/FAIL), a 0-100 score, and an answer to the question that actually matters - how many players can this server handle - instead of only raw min/max TPS and memory numbers. The console report, the in-game ops summary, and a saved file all share the same analysis. - Honest player-capacity estimate - Reports an equivalent real-player range (e.g.
~9-17 real players) derived from the measured per-bot tick cost and the 50 ms tick budget, with an explicit caveat: stress bots only exercise chunk loading, so real players - who also add networking and entity-tracking load this test does not measure - may lower that figure. No more reading "5 bots were fine" as "5 players is my limit". - Bottleneck diagnosis - Identifies the real limiting resource - the single-threaded main loop, overall CPU, or memory - so the advice fits the actual wall. Because Minecraft's tick loop is mostly single-threaded, it tells apart "one core maxed out" from "the whole machine is maxed out", and won't tell you to add RAM when the main thread is the bottleneck.
- Trend & memory-leak detection - Samples performance every ~10 s during the run and reports whether TPS held stable, degraded, or collapsed over time, rather than only the worst instant. Memory is judged by the post-GC live-set, so a healthy sawtooth heap (which briefly spikes near 100% before each GC) is no longer mistaken for trouble, while a steadily climbing live-set is flagged as a suspected leak.
- Prioritized, hardware-aware recommendations - Advice is now ranked by impact, de-duplicated, and quantified against your actual hardware (cores, max heap, GC type) - for example
view-distance 10→8 ≈ -18 ms/tickorincrease -Xmx to ~6G, rather than fixed, generic threshold messages. - Saved Markdown report - Every run also writes a timestamped report to
<world>/stressmark-reports/with TPS/MSPT sparklines, the full per-sample time-series table, and a playbook for each recommendation (probable cause, remedy, exact flag/command) - so results survive the console scrollback and can be kept or shared.
Bug Fixes
- Fixed misleading Young-Gen GC time in reports - The "Young Gen total ms" figure was a fabricated proportional estimate (
total pause × young / (young + old)) because young and old GC pause times were never tracked separately. Reports now sum the real per-collection pause time for each generation.
Improvements
- Verified analysis engine - The new report logic (trend, memory, bottleneck, capacity, grading, recommendations) lives in a self-contained, Minecraft-independent module covered by unit tests, so its verdicts are checked against synthetic scenarios rather than only observed in passing.
1.3.2Релиз1.21.11 · 17 июня 2026 г.
Bug Fixes
- Fixed bot spawning stalling at 2,000 on servers that stop ticking - The 1.3.x incremental spawn created bots across server ticks, so if the server stopped ticking right after
stress start(for example an empty server paused bypause-when-empty-seconds, or a server stalled by a long GC / chunk backlog), only the first batch was ever created and the test reported e.g.40000 requested, 2000 spawned. Bots up to 50,000 are now created synchronously inside thestress startcommand, so they exist immediately and no longer depend on the server continuing to tick. Counts above 50,000 still spawn the remainder across ticks (to avoid a long single-tick freeze) and now log a clear warning that the remainder needs the server to keep ticking.
1.3.1Релиз1.21.11 · 17 июня 2026 г.
Bug Fixes
- Fixed "Server handled 0 bots comfortably" on large tests - With the 1.3.0 incremental spawning,
stress startno longer created bots in the command call, so a quickstress stop(or an overloaded server that could not tick) found an empty bot list and the final report claimed0bots were tested - even when thousands were requested. The report now uses the requested count and never reports a misleading "handled 0 bots".
Improvements
- Immediate first spawn batch -
stress startnow creates the first batch (up to 2,000 bots) synchronously, so a stress test always has bots right away (small tests are instant), while larger counts still spread the remainder across ticks to avoid freezing. The reported bot count is therefore never0for a started test. - Accurate requested-vs-spawned reporting - When the server cannot create every requested bot in time (e.g. chunk-generation overload), the final report and
stress statusnow show both numbers - e.g.Bots: 30000 requested, 6000 spawned- plus a clear recommendation (Only 6000 of 30000 requested bots spawned ...). The "handled comfortably" note now only appears when the full requested count actually spawned.
1.3.0Релиз1.21.11 · 17 июня 2026 г.
New Features
- Up to 1,000,000 stress test bots - Raised the
stress start <count>cap from 10,000 to 1,000,000 for extreme-scale chunk-generation / disk load testing - Speed range 0 - 10,000 blocks/sec - Widened
stress start <count> [speed]from0.5 - 20.0to0.0 - 10000.0.0keeps bots stationary (holds chunks loaded without moving); high speeds drive bots into fresh terrain fast to push chunk generation harder
Improvements
- Smooth, non-freezing bot spawning - Bots are now created incrementally in batches of 2,000 per tick instead of all at once. Large counts (e.g. 1,000,000) spread their creation over many ticks (~25s) so a single tick never freezes and the server watchdog is never tripped
- Bounded console and status output at scale - Bot creation failures are logged at most 10 times (plus a final summary) instead of one line per bot, and
stress statusnow shows the first 20 bot positions followed by... and N more bots.stress statusalso reports live spawning progress (Spawning: X / Y bots created) - Removed O(n²) bot-list cost - Switched the internal bot list from
CopyOnWriteArrayListto a plainArrayList(all access is on the server main thread), eliminating the full-array copy on every bot added - which previously made large counts unusable
1.2.0Релиз1.21.11 · 17 июня 2026 г.
New Features
- Up to 10,000 stress test bots - Raised the
stress start <count>cap from 100 to 10,000 for large-scale load testing - Multi-version spawn support (MC 1.21 - 1.21.11) - Version-specific source sets (
spawn-legacy/spawn-modern) resolve the world spawn correctly across the spawn-chunk API change in 1.21.9, selected at build time via thespawn_apiproperty
Bug Fixes
- Fixed stress bots always spawning at world origin (0, 0) - The spawn lookup used reflection (
getSharedSpawnPosby string name), which Loom does not remap; on Fabric it always threw and silently fell back to(0, 80, 0). Replaced with a direct, version-correct call - bots now spread out in a star pattern from the real spawn - Fixed spawn resolution on MC 1.21.9+ - reads the spawn from
LevelData.RespawnDatasincegetSharedSpawnPos()was removed
1.1.0Релиз1.21.11 · 11 февраля 2026 г.
New Features
- Rolling TPS/MSPT windows - Independent tick timing with 10s, 1m, and 5m rolling averages, replacing reliance on vanilla
getTickTimesNanos()buffer - Tick monitor with baseline - Auto-calibrates over 120 ticks during stress tests, reports tick ratio vs baseline for relative performance tracking
- Real-time GC monitoring - Listens to JVM garbage collection events via JMX, tracks Young/Old Gen separately with duration, frequency, and memory freed
- Colored metrics in chat - TPS, MSPT, CPU, memory, and scores are color-coded by severity thresholds (green/yellow/red)
- Unicode memory bar - Visual
[████████░░░░░░░░] 67%bar in benchmark and stress test output - GC section in reports - Both
/benchmark detailedand stress test final reports now include GC activity (collection counts, pause times, longest pause) - Sub-scores exposed -
/benchmark detailedshows individual TPS, Memory, CPU, and Stability scores alongside the overall grade - Bottleneck identification - Player capacity calculator now identifies the limiting factor (TPS, Memory, or CPU)
- Disk metrics -
/benchmark detailedincludes disk space and I/O stats - Contextual recommendations - Smart suggestions based on TPS, MSPT, memory, CPU, GC, and disk metrics
Bug Fixes
- Fixed TPS always showing 20.0 during lag - Replaced custom
calculateTps()withTpsMetricCollectorthat correctly reads vanilla tick times, and added MSPT spike detection
Improvements
- Stress test periodic updates now log to console only (reduced ops chat spam)
- Ops are only alerted for significant events: TPS drops >20% or memory usage >80%
- GC events during stress tests are logged to console only
- Stress test final report includes GC activity section and GC-based recommendations
1.1.0Релиз1.21.10 · 11 февраля 2026 г.
New Features
- Rolling TPS/MSPT windows - Independent tick timing with 10s, 1m, and 5m rolling averages, replacing reliance on vanilla
getTickTimesNanos()buffer - Tick monitor with baseline - Auto-calibrates over 120 ticks during stress tests, reports tick ratio vs baseline for relative performance tracking
- Real-time GC monitoring - Listens to JVM garbage collection events via JMX, tracks Young/Old Gen separately with duration, frequency, and memory freed
- Colored metrics in chat - TPS, MSPT, CPU, memory, and scores are color-coded by severity thresholds (green/yellow/red)
- Unicode memory bar - Visual
[████████░░░░░░░░] 67%bar in benchmark and stress test output - GC section in reports - Both
/benchmark detailedand stress test final reports now include GC activity (collection counts, pause times, longest pause) - Sub-scores exposed -
/benchmark detailedshows individual TPS, Memory, CPU, and Stability scores alongside the overall grade - Bottleneck identification - Player capacity calculator now identifies the limiting factor (TPS, Memory, or CPU)
- Disk metrics -
/benchmark detailedincludes disk space and I/O stats - Contextual recommendations - Smart suggestions based on TPS, MSPT, memory, CPU, GC, and disk metrics
Bug Fixes
- Fixed TPS always showing 20.0 during lag - Replaced custom
calculateTps()withTpsMetricCollectorthat correctly reads vanilla tick times, and added MSPT spike detection
Improvements
- Stress test periodic updates now log to console only (reduced ops chat spam)
- Ops are only alerted for significant events: TPS drops >20% or memory usage >80%
- GC events during stress tests are logged to console only
- Stress test final report includes GC activity section and GC-based recommendations
1.1.0Релиз1.21.9 · 11 февраля 2026 г.
New Features
- Rolling TPS/MSPT windows - Independent tick timing with 10s, 1m, and 5m rolling averages, replacing reliance on vanilla
getTickTimesNanos()buffer - Tick monitor with baseline - Auto-calibrates over 120 ticks during stress tests, reports tick ratio vs baseline for relative performance tracking
- Real-time GC monitoring - Listens to JVM garbage collection events via JMX, tracks Young/Old Gen separately with duration, frequency, and memory freed
- Colored metrics in chat - TPS, MSPT, CPU, memory, and scores are color-coded by severity thresholds (green/yellow/red)
- Unicode memory bar - Visual
[████████░░░░░░░░] 67%bar in benchmark and stress test output - GC section in reports - Both
/benchmark detailedand stress test final reports now include GC activity (collection counts, pause times, longest pause) - Sub-scores exposed -
/benchmark detailedshows individual TPS, Memory, CPU, and Stability scores alongside the overall grade - Bottleneck identification - Player capacity calculator now identifies the limiting factor (TPS, Memory, or CPU)
- Disk metrics -
/benchmark detailedincludes disk space and I/O stats - Contextual recommendations - Smart suggestions based on TPS, MSPT, memory, CPU, GC, and disk metrics
Bug Fixes
- Fixed TPS always showing 20.0 during lag - Replaced custom
calculateTps()withTpsMetricCollectorthat correctly reads vanilla tick times, and added MSPT spike detection
Improvements
- Stress test periodic updates now log to console only (reduced ops chat spam)
- Ops are only alerted for significant events: TPS drops >20% or memory usage >80%
- GC events during stress tests are logged to console only
- Stress test final report includes GC activity section and GC-based recommendations
Комментарии
Загружаем…