C=32 稳态压测 · 架构师评审包

2026-07-16 · 10.2.144.147 · medium · mock-perf · sustain 1800s · 采样 10s(折线降采样 ~30s)

250/251(99.6%) P50 234s · P95 272s 1× recovery timeout

核心结论(给架构师)

本次压测验证的是「中型分析 Agent + K8s 沙箱 + 4 分片 LangGraph」在 C=32 稳态 30 分钟下的 infra 容量,不是真实 Kimi 语义质量。单用户仅 1 条 prompt,Agent 内部约 3 轮 Mock LLM(write_file → present_files → final)。完整成功率 99.6%,成功路径延迟集中在 220–270s;资源头room 充足。Sandbox 容器采样峰 4 / 均 2.28,低于 active_run≈32,属懒加载 + 短占用窗口下的预期现象(见第二节说明),不能据此判定沙箱容量不足。

99.6%
完整成功率
234s
P50
272s
P95
32
稳态并发 / 4×8 jobs

一、压测业务场景说明

「场景」= Agent 帮用户做什么 + 对话轮次 + Mock 大模型每轮输入输出(非 Gateway HTTP 路径)

1.1 业务场景(medium 档)

模拟中型数据分析交付:用户一次性下达分析任务(检索/整理宏观或商品价格数据),要求 Agent 调用沙箱工具生成 Excel/Markdown 并 present_files 交付。压测使用 mock-perf 模型,不调用真实 Kimi。

典型 prompt(轮换 4 种模板,见 dialogue_workloads.py):

#业务描述
1国际金价一周走势 → Excel + present_files
2中国 GDP 年度数据 → Excel + present_files
3铜价月趋势 → xlsx + md 双文件 + present_files
4GDP 多指标 → Excel + present_files
1.2 对话轮次(用户 vs Agent 内部)
步骤角色动作说明LLM 次数
1压测客户端POST /threads → POST /runs/wait1 条用户 prompt
2Agent / LangGraph模型 → 工具 → …ReAct 循环≈3 次 LLM
3Mock LLM #1tool_calls write_filesleep ≈40s1
4Sandboxwrite_file真实 K8s 沙箱
5Mock LLM #2tool_calls present_filessleep ≈40s1
6交付present_files不强制占 Pod
7Mock LLM #3final 文本sleep ≈40s1

轮次定义

用户对话轮次 = 1Agent 内部 LLM 轮次 ≈ 3(write_file → present_files → final)。总 wall time ≈ 3×40s LLM + 工具/调度开销。

1.3 Mock 大模型 · 成功判定

mock_openai_llm.py · medium_script · 147:18080 · workers=32 · per_round=40s · max_inflight=32

完整成功HTTP 200 + write_file/present_files + 交付物或 ≥80 字分析文本
稳态C=32 × 1800s,到期后排空在途
LangGraph4 shards × N_JOBS=8 ≈ 32 slots

二、结果与资源时序

Source: …/2026-07-16-147-formal-c32-sustain30m-v3-mock32 · langgraph_resources.jsonl

延迟分布(251 任务)
203
200-250s
42
250-300s
0
300-400s
5
400+s
1
900+s

P50 234.1 · P95 272.3 · P99 495.0 · 均 241.6

各 LG CPU 峰 / 均
峰值均值
lg
105/12
lg-1
90/8
lg-2
99/6
lg-3
83/6

读图注意

时序图横轴为开测后分钟数(降采样 ~30s,共 61 点);开头/结尾 active 偏低为爬坡与排空窗口。Sandbox 容器数长期低于 active_run,原因见下方说明。

活跃 Run 数(稳态并发)· 目标线=32

X:开测后分钟 · Y:active_run_count

四实例 LangGraph CPU%(合计)· 峰 252% / 均 32%

不含 watchdog · Docker 口径 100%≈1 核

各 LangGraph 实例 CPU%
各 LangGraph 实例内存(MiB)

合计峰 1.8 / 均 1.7 GiB

LangGraph 内存合计(GiB)
Sandbox 容器数 / 内存

容器峰 4 / 均 2.28 · 内存峰 1.4 GiB

为何 Sandbox 容器数远低于任务 / active_run?

口径不同:active_run 含整段 run(含 Mock LLM 等待);container_count 是此刻存活的 sandbox Pod。

懒加载:仅 write_file 等工具 acquire;present_files 不强制占 Pod。

短占用窗口:并发 Pod ≈ 32 × (10–30s / 234s) ≈ 1.4–4,与峰 4 / 均 2.28 一致。

容量与回收:effective_replicas=12;reconcile 回收空闲 Pod。Gateway logical active 常为 0,orphan 易偏高,不代表泄漏。

资源峰值均值解读
LG CPU 合计252%32%尖峰间歇,非持续算满
LG 内存合计1.8 GiB1.7 GiB远离 4Gi 上限
Sandbox 容器42.28远低于 active_run≈32
Sandbox 内存1.4 GiB701 MiB

三、结论

容量:C=32 稳态 30 分钟可稳定运行(99.6%),4 分片负载均衡,active_run 长期维持 32,资源头room 充足。

延迟:成功路径集中 220–270s;1/251 为偶发 504→recovery timeout。

沙箱:峰 4 / 均 2.28 与懒加载短窗口一致,不能据此判沙箱为瓶颈。

边界:mock-perf infra 压测,不外推真实 Kimi 容量。

四、系统演进方案

平台能力演进方向,非本次压测必修 checklist。

阶段说明落点
场景语义模板化固定附 prompt / LLM 轮次 / Mock I/O / 判定loadtest report
端到端延迟分解LLM / 沙箱 / 网关 / 超时恢复分段loadtest + obs
沙箱与 active run 对齐可观测pod 数、acquire 峰、就绪耗时;reconcile 覆盖全分片provisioner + obs
Gateway 超时对齐相对 medium P95 留足余量deploy
Mock 交付保真度分层区分 infra / 交付格式mock_openai_llm
真实模型容量曲线Kimi medium 单独 C 曲线benchmark
strict_deliverable 档强制 artifact 稳态档loadtest flag