Run a Spark Profiler and Share the Results
Install Spark, run a performance profile on your Minecraft server, and share the report link with our support team. Works on Paper, Purpur, Fabric, Forge, and NeoForge — including wisp.gg-hosted servers.
What Spark Is (and Why We Ask for It)
Spark is the standard performance profiler for Minecraft servers. When you tell us "the server is lagging," we can guess — but Spark tells us exactly which plugin, mod, or entity is eating CPU. A 2-minute profile usually nails the culprit in one glance.
When our support team asks for a Spark profile, this is the guide to run through.
Step 1: Check If Spark Is Already Installed
Spark is bundled with some server software out of the box — you don't need to install it separately.
| Server | Bundled? |
|---|---|
| Paper 1.21+ | ✅ Yes — already available, skip to Step 3 |
| Purpur 1.21+ | ✅ Yes — already available, skip to Step 3 |
| Paper/Purpur 1.20 and earlier | ❌ Install manually (Step 2) |
| Forge / NeoForge | ❌ Install manually (Step 2) |
| Fabric | ❌ Install manually (Step 2) |
| Vanilla | ❌ Install manually (Step 2) — you'll need to add a mod loader first, or switch to Paper |
Quick test: run /spark in the server console. If you get a help message, it's installed. If it says "unknown command," go to Step 2.
Step 2: Install Spark (wisp.gg panel)
- Open spark.lucko.me/download
- Download the correct file for your server:
- Paper / Purpur / Spigot →
spark-<version>-bukkit.jar - Fabric →
spark-<version>-fabric.jar - Forge →
spark-<version>-forge.jar - NeoForge →
spark-<version>-neoforge.jar
- Paper / Purpur / Spigot →
- In the wisp.gg panel, stop your server
- Open the File Manager
- Navigate to:
- Paper/Purpur/Spigot →
/plugins/ - Fabric/Forge/NeoForge →
/mods/
- Paper/Purpur/Spigot →
- Click Upload and select the Spark jar you just downloaded
- Start the server — you should see a line like
[spark] Starting spark...in the console
Mismatched version? If Spark refuses to load with an error about the Minecraft version, you grabbed the wrong file. Go back to the download page, check your server's MC version in wisp.gg, and download the matching variant.
Step 3: Get Permission to Run Spark Commands
Spark requires operator permissions to run.
If you're running the command from the wisp.gg Console tab, you don't need op — the console runs as the server itself. Skip to Step 4.
If you're running it in-game, you need op:
- Connect to the server as yourself
- In the wisp.gg Console tab, type:
op YourMinecraftUsername - You're now an operator and can run
/sparkcommands in-game
Step 4: Start the Profiler
Run a 2-minute profile while the server is lagging. The command depends on how you want to frame it:
| Command | When to use |
|---|---|
/spark profiler --timeout 120 |
Best default. Auto-stops after 2 minutes and uploads. |
/spark profiler |
Starts an open-ended profile — remember to stop it manually. |
/spark profiler --thread * |
Profile all threads (not just the main server thread). Use when Paper tells you it's offloading work. |
/spark profiler --only-ticks-over 50ms |
Only record ticks that took >50ms (the slow ones that matter). Great for catching rare hitches. |
Kick it off:
/spark profiler --timeout 120
While the profiler runs, reproduce the lag:
- If lag happens when a specific player logs in → have them log in now
- If lag happens at a specific time of day → run the profile then
- If lag is constant → just let it run
- If lag is during a boss fight or big farm → trigger those now
The more representative the 2 minutes are, the more actionable the report.
Other useful commands:
| Command | What it does |
|---|---|
/spark profiler stop |
Manually stop a running profile and upload the report |
/spark profiler cancel |
Abort without uploading (useful if you started it wrong) |
/spark tps |
Show current and historical TPS |
/spark tickmonitor |
Live stream of every tick that exceeds 50ms (great for debugging) |
/spark healthreport |
One-shot summary of CPU, memory, and GC health |
/spark heapsummary |
Object counts and memory usage by Java class (find memory leaks) |
Full command reference: spark.lucko.me/docs/Command-Usage.
Step 5: Get the Report Link
When the profile finishes (either timeout hits or you run /spark profiler stop), Spark uploads the report to its own servers and prints a clickable URL in the console:
[spark] Profile uploaded: https://spark.lucko.me/aBcDeFgHiJ
Copy that URL. That's what support needs.
Privacy note: Spark reports include server name, plugin/mod list, and performance data. They do not include player chat, coordinates, inventories, or account credentials. The upload is stored by Spark's cloud — not by DustBowl.Games. Links are effectively unguessable (10+ random chars) but not formally private, so don't paste them publicly if your plugin list is sensitive.
Step 6: Share the Report with DustBowl Support
The fastest way to get help:
- Join our Discord
- Open a ticket in
#support(or DM an admin) - Paste the Spark link along with:
- Server name (so we can find it in our panel)
- What's laggy — TPS drops, specific actions, specific times of day
- Recent changes — new mods, new plugins, new version, big population event
A good message looks like this:
Hey, my modpack server
dustbowl-oceanhas been sitting at 12 TPS since I added the Create mod last night. Lag is constant, even with just me on. Here's a 2-min Spark profile: https://spark.lucko.me/aBcDeFgHiJ
How to Read a Spark Report (Skim Version)
You don't need to be a JVM expert to get value out of a Spark report. The CPU tab is where 90% of insights come from.
Open the report link. On the CPU graph tab, look for:
Red flag: A single plugin/mod using >20% of tick time
You'll see something like:
net.somebrokenmod.BrokenTickHandler.tick() — 28%
That one mod is eating nearly a third of your tick budget. Either:
- Disable it to confirm it's the culprit (restart, check TPS)
- Check if it has a config option to reduce its frequency
- Report the issue to the mod's bug tracker
Red flag: An entity/mob class at the top
net.minecraft.entity.passive.ChickenEntity.tick() — 15%
Too many of that entity. Either cull with /kill @e[type=chicken], find the player's chicken farm and scale it down, or install a plugin like ClearLag.
Red flag: Chunk I/O or ChunkLoader dominating
net.minecraft.world.chunk.ChunkProvider.loadChunk() — 22%
Players are exploring new terrain. Pre-generate the world with Chunky (see Troubleshoot and Fix Minecraft Server Performance).
Red flag: GC taking >10% of server time
Open the Memory tab. If you see frequent full garbage collections, your heap is too small or your JVM flags are wrong. See the Aikar's flags section of the perf guide.
The main server thread is almost always "server-worker-0" or "main"
That's the one tab you care about. Anything on other threads (network, chunk I/O worker pool) matters less — Paper offloads those on purpose.
Troubleshooting
Unknown or incomplete command — Spark isn't installed (see Step 2) or the server isn't Paper/Purpur 1.21+ (which ships with it).
You do not have permission to use this command — Run the command from the wisp.gg Console tab instead of in-game, or op yourself first (Step 3).
Profile link returns 404 or "expired" — Spark reports auto-expire after a few weeks. Run a fresh profile.
Profile shows nothing interesting / flat 20 TPS — You captured a window where the server wasn't laggy. Wait for the lag to happen again and profile during the problem, not after.
Related
- Troubleshoot and Fix Minecraft Server Performance — the full performance playbook
- Setting Up a Minecraft Server — first-time setup
- server.properties Generator — tune view-distance, simulation-distance, etc.
Still stuck? Join us on Discord with your profile link and we'll dig in with you.