Most async Rust performance problems trace back to a handful of mistakes: blocking in async context, holding mutexes across await points, spawning without backpressure, and CPU work that starves the scheduler. This post covers each one and shows the correct pattern.