背压(Backpressure)
当任务到达速度超过处理速度时的流控机制,防止队列无限积压。
生产方式:人写签发:晓黎学习复核:2026年9月21日被 0 个词条引用
一句话定义
背压 = 当下游处理不过来时,向上游施加压力,让它减速或停下,而不是无限接收。
为什么必须处理
没有背压的系统会经历同一个失败过程:
任务到达速度 > 处理速度
↓
队列持续增长
↓
内存占用上升
↓
延迟上升(排队变长)
↓
最终 OOM 或整体超时
关键点是:这个问题不会自愈。积压只会越来越严重,直到系统崩溃。
三种策略
| 策略 | 行为 | 适用场景 |
|---|---|---|
| 拒绝(reject) | 明确返回「队列满」,让调用方决定 | 调用方能处理失败 |
| 阻塞(block) | 等待队列有空位(需超时保护) | 任务不可丢 |
| 丢弃(shed) | 按优先级丢弃最低者 | 有明确优先级差异 |
排队为什么可能是错的
直觉上「排队」比「拒绝」更友好,但在 Agent 系统里排队会造成死锁:
父 Agent 等待子 Agent 完成
↓
子 Agent 需要槽位才能启动
↓
槽位被父 Agent 自己占用
↓
双方互相等待 → 死锁
DeepSeek Harness 的处理方式很明确:
At capacity, creation or cold resume rejects with
ACTIVATION_LIMIT_REACHED... Admission does not queue, because a parent waiting for descendants must not wait for its own occupied slot.
规则:当等待资源的实体本身就是占用资源的一方时,必须拒绝而非排队。
在 Agent Harness 中的位置
| 场景 | 背压表现 |
|---|---|
| 工具并发调用 | maxParallelToolCalls 上限 |
| 子 Agent 委派 | maxActiveSubagents 上限,超限拒绝 |
| 任务队列 | maxQueueSize + 溢出策略 |
| 模型请求 | 并发请求数上限 |
相关
- 第 12 讲 任务分发
- 第 11 讲 Agent 通信
- Fail-closed(失败即拒绝) — 背压超限时的拒绝策略同属一类安全取向
互链
链接来自概念卡正文里的双链,编译时能解到本期词条集的才成为站内链接。
反链(0)
还没有其它词条引用这一页。
出现在哪些课时里(0)
判据与「课时正文里能不能点出来」是同一个:那一节确实提到了它。点课时走当前页跳转, 它是导航,不是词条链接。
还没有课时讲到这一条。它是词条跑在课程前面的那一部分,不是错链。
关联图
只画这一条与它直接相连的词条,边与上面两区同源。可拖拽、可缩放,点节点是新标签。
以列表方式看这 2 个节点
出处
路径是本地知识库(Obsidian 库)里的位置,正文与概念卡逐字对应。
- 概念卡原文背压(Backpressure)
03_RESOURCES/概念/背压.md - 所属知识地图栏目概念页索引 · 可观测性与可靠性
03_RESOURCES/概念/Index.md - 正文引用的知识库笔记第 12 讲 任务分发
02_AREAS/AI开发/Harness Engineering/Agent Harness 课程/12-任务分发:从意图到执行单元.md - 正文引用的知识库笔记第 11 讲 Agent 通信
02_AREAS/AI开发/Harness Engineering/Agent Harness 课程/11-Agent通信:消息、交接与协作协议.md
编译入库:2026年11月2日。词条由知识库编译而来, 修正要回到概念卡改,再重新编译。