在大量 spawn_blocking 任务时发生运行时停机
作者: trungda创建于 2026年9月14日更新于 2026年9月14日
标签C-bugA-tokioM-blocking
你好! 我们正在调试应用程序下的负载延迟增加问题。 目前我们还不清楚实际问题是什么,但一个潜在假设是,在负载情况下,服务会创建许多 `spawn_blocking` 任务,并且有一个互斥量来保护 `VecDeque`。 我们的服务很强大(100 个核心,512GB 内存),我们运行了一个数据库服务器。 我们将 tokio 配置为具有 1024 个阻塞线程,在负载情况下,我们会创建多达 60K-100K `spawn_blocking` 任务(每个任务都是对 rocksdb 的多次获取)。 我们正在积极分析服务,以确定实际问题,但我想知道社区是否以前已经处理过这个问题,以及您通常如何解决这个问题? 您是否将多个任务批量放入一个 `spawn_blocking` 中,还是创建一个专用的运行时(另一个 tokio 或可能是 rayon)来处理阻塞 IO 任务。 谢谢!
内容来源: tokio-rs/tokio