协作存储压测套件(U7 / B5 / C2)
方案 §3 负载合同 / §5 U7 的业务压测入口。只打隔离栈(自建 PG 实例 +
mock 模式 backend),绝不打生产服务;模拟模型(mock)用于容量基线,真实
模型的全链路验证按方案另行小流量执行。
组成
| 文件 |
职责 |
run_load.sh |
编排入口:起隔离栈 → 可选 seed → 引导账号 → k6 → SSE 探针 → 不变量对账 → 回收 |
seed/ |
B5 大数据量种子(PG COPY:messages/events/knowledge;tiny / contract) |
k6/collab_api.js |
混合读写负载;双实例时 BASE_URLS VU 粘滞 + 跨实例读 + 热点会话 409 |
sse_probe/ |
SSE 持久事件可见延迟探针(Go);双实例时对 A/B 各跑一份 |
results/<ts>/ |
原始输出:k6-summary.json、sse-probe-a.json(及 -b)、seed-manifest.json、invariants.txt |
快速开始
--seed 档位
| profile |
用户 |
项目/用户 |
会话/项目 |
messages(+events) |
knowledge |
用途 |
none |
— |
— |
— |
0 |
0 |
默认;空库压测 |
tiny |
3 |
2 |
2 |
1 000 |
1 000 |
接线冒烟(秒级) |
contract |
10 |
5 |
10 |
1 000 000 |
100 000 |
方案 §3 数据量档 |
- 约 10% knowledge 行
owner=''(基座共享知识语义);不写 knowledge_vectors
(进程内向量扫描面向数万块;100 万分块扩展档另档)。
- 交叉授权:数据集含多用户多项目 + 共享分块;EXT-8
ResourceAuthorizer 矩阵
仍由检查单 A7 覆盖,本入口不注入 load-only 授权后门。
contract 耗时/磁盘随机器变化;正式容量结论须绑定组件 SHA 与
results/<ts>/seed-manifest.json,不预填。
--instances(C2)
| 值 |
行为 |
1(默认) |
单 serve:u7load-a @ --port(默认 18980) |
2 |
双 serve 共享同一 APP_DSN 与 artifacts;B @ --port-b(默认 18982,避开隔离 PG 18981) |
双实例时 k6 注入 BASE_URLS=a,b:VU 粘滞到实例、跨实例读抽样、热点会话
跨实例写计入 expected_contention(409)。非热点会话读路径仍受
P95≤300ms 阈值约束——「互相不拖累」的可机判口径。SSE 探针对 A/B 各跑一份。
阈值与口径(负载合同,待实测校准)
- 非模型普通 API:读路径 P95≤300ms、P99≤1s(k6 threshold 按
read 组单列)。
- 非预期失败率≤0.1%(
http_req_failed<0.001);预期拥塞(会话忙 409 /
队列满 429)记入 expected_contention,不计入失败。
- SSE 持久事件可见延迟 P95≤1s + seq 零乱序(探针退出码即断言)。
- 数据不变量零违反:events 每会话 seq 无重复(SQL 对账,违反即 exit 1)。
边界(诚实声明)
- 正式 60min/2h 窗口、双主机(C3)、
contract 满量压测窗口需用户指定资源与时间;
本仓提供可复核入口,不预填容量结论。
pgbench 只测数据库能力,不替代站点业务验收(方案 §5 U7)。入口是
run_pgbench.sh(检查单 B6):隔离实例 u7bench、端口 18995、scale 100,
select-only 与 TPC-B 各跑 10/30/100 客户端。没有业务阈值;结果是参考基线。
- k6 缺失时跳过 k6 段并写
k6-skipped.txt;探针与对账仍跑。