Back to articles
Finding Blocking Code in Async Rust Without Changing a Single Line
How-ToDevOps

Finding Blocking Code in Async Rust Without Changing a Single Line

via Dev.toWes

You know the symptoms. Latency spikes under load. Throughput that should be higher. A Tokio runtime that's doing less work than it should be, and you can't see why. Something is blocking a worker thread, starving the other tasks, and nobody's throwing an error about it. The standard advice is tokio-console. Add console-subscriber to your dependencies, rebuild, redeploy, reproduce the problem, and look at task poll times. It works well. It also requires code changes, a rebuild, and a redeployment, which means it's not what you reach for when staging is melting and you need answers now. The other option is perf . Attach to the process, collect stack traces, generate a flamegraph, and interpret a wall of unsymbolized frames. It'll tell you everything that's happening on every thread. The signal-to-noise ratio for "which Tokio worker is blocked and by what" is not great. There's a gap between those two. A tool that attaches to a running Tokio process, finds the blocking code, and shows you

Continue reading on Dev.to

Opens in a new tab

Read Full Article
3 views

Related Articles