Documentation
¶
Overview ¶
loadtest 对网关打压测:固定并发 goroutine 持续请求,支持流式首字节和非流式完整响应延迟。 用法: go run ./tools/loadtest -mode stream -addr http://127.0.0.1:8080 -key ck-xxx -concurrency 10000 -duration 5m -healthz http://127.0.0.1:8080/healthz
go run ./tools/loadtest -mode fill -fill-type users -admin-token <C3API_ADMIN_TOKEN> -concurrency 2000 -duration 5m
混合压测(模型请求 + 填充 API 并发):开两个 loadtest 进程同时跑——一个 -mode stream -keys keys.txt、一个 -mode fill,各自 -out 落盘。同机交错跑 + 每请求 CPU 对比(压测机 loadavg 50+,单进程内混流会让 fill 请求被流式 长连接饿死,双进程是简单可靠的分流)。 相对 brief 原代码的修正(均标注在行内):
- os import 用 -out 兜底:把 RESULT 摘要同时写入文件(验收记录留档)。
- 采样 goroutine 的 elapsed 直接取真实经过时间(brief 里 time.Since 套 time.Since 的表达式恒为 ~0s,属"简化输出"占位)。
- 首字节采样从 sync.Map 改为 mutex map(并发 CAS 实测在 Go 1.26 HashTrieMap 上高争用会活锁,压测卡死,见压测记录)。
- 连接级失败 100-300ms 抖动退避 + -warmup 预热窗口:Windows 监听 backlog≈200,无退避的突发拨号会形成自持 RST 拒绝风暴(500 并发 无退避实测 99.4% refused)。
- 错误明细(err_detail)输出 + -pprof goroutine 转储,便于定位压测问题。
Directories
¶
| Path | Synopsis |
|---|---|
|
setup 构造多租户压测数据(Phase 3a 数据模型 + Phase 5 计费字段): 模板(三格式 × 随机模型池)→ 公开组 → 账号(分散模板/组/上游)→ 用户(可选 余额/并发区间)→ 逐个登录建 key(可选多 key/并发/额度区间),key 明文写文件 (loadtest -keys 用)。
|
setup 构造多租户压测数据(Phase 3a 数据模型 + Phase 5 计费字段): 模板(三格式 × 随机模型池)→ 公开组 → 账号(分散模板/组/上游)→ 用户(可选 余额/并发区间)→ 逐个登录建 key(可选多 key/并发/额度区间),key 明文写文件 (loadtest -keys 用)。 |
Click to show internal directories.
Click to hide internal directories.