As my workflows handle more data and run more often, I want to keep them quick and reliable instead of watching them crawl. How do I optimize performance on large or high-volume workflows in 3B? What are the usual bottlenecks and the habits that keep things efficient?
The short version: most slowdowns aren’t the “code” necessarily, they’re the shape of the workflow. The usual suspects:
-
Exclusive volumes are your #1 culprit. An
concurrency=exclusivevolume stays locked for the entire step, including time spent waiting on a model or a slow API. So if a new run fires before the last one finishes, they queue up behind the lock. Do all your slow work (fetches, model calls, transforms) before you enter the exclusive writer step. Get in, write, get out. -
Assume runs overlap. High-volume = concurrent by default. Design for a new run starting before the old one ends. Use
:romounts for anything that only reads, shared writable mounts when writers own separate paths, and saveexclusivefor when they genuinely touch the same record or index. -
Throw out what you don’t need early. The sooner you drop data you’re not going to use, the less every later step has to think over. So filter at the top, not the bottom.
And if two jobs don’t rely on each other, run them side by side instead of one after the other. Link them as separate steps and 3B does them at the same time, faster than making everything wait in one long line.
-
Don’t make your page wait on data. If a page has to finish loading all its data before it shows anything, people stare at a blank screen. Better to show the page right away and let it go grab the data in the background. Feels way faster.
-
For big files, send them in pieces. Don’t load a huge file all at once. That’s how steps get slow or run out of memory. Send it through in chunks instead. Steadier and lighter.
-
Group/batch your API calls and keep time limits tight. If an API lets you send a bunch of things in one call, do that instead of hammering it one at a time. And don’t set a giant time limit. It won’t make a step faster, it’ll just hide one that’s quietly stuck.
The main habit: before you optimize anything, look at your run history and find the step that’s actually slow. It’s usually one step doing too much, or a blocker you didn’t realize was there.
Happy building!