用途:当 Axum 服务在并发负载下变慢、尾延迟升高、卡死或无响应,或处理器需要执行 CPU 密集与同步阻塞工作时,用本技能排查与修复。核心规则是绝不在异步处理器中阻塞 Tokio 运行时:同步阻塞调用没有 .await,会冻结工作线程并饿死该线程上其他请求。
主要能力:提供阻塞调用到异步替代的对照(如 std::thread::sleep 换 tokio::time::sleep().await,std::fs 换 tokio::fs,阻塞 SQL 驱动换 sqlx 异步 API 或 spawn_blocking);区分 tokio::spawn(并发异步、可 fire-and-forget)与 tokio::task::spawn_blocking(CPU 密集或同步阻塞,使用独立阻塞线程池,默认 max_blocking_threads 为 512);说明 !Send future 陷阱(Rc、RefCell 借用、std::sync::MutexGuard、tracing span enter() 守卫不可跨 .await),并给出作用域化守卫的修复方式;连接池需在启动时构建一次并通过 with_state 共享,设置 max_connections 与 acquire_timeout 以实现快速失败;worker_threads 默认按 CPU 核数,除非有实测理由否则不调整。
使用方式:按决策树选择卸载工具;对 CPU 密集工作使用 spawn_blocking 并 .await 其 JoinHandle;对需跨 .await 持锁的场景用 tokio::sync::Mutex,否则优先作用域化 std::sync::Mutex;出现 Handler is not satisfied 时加 #[debug_handler] 定位。
适用场景:Axum 0.7 与 0.8(本技能 Tokio API 无版本差异)的并发性能诊断与修复。
限制:资料未提供具体基准数据、收费信息或平台支持范围;数据库细节、WebSocket、tracing 与部署相关内容分别见关联技能。