Files
PolyGateway/research-wiki/findings/2026-07-22-p7-ocr-soak.md
T

34 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P7 OCR soak 验收: 故障池下 99.73%,13 不变量全 PASS
- **日期**: 2026-07-22;**验收 run**: `soak_20260722_002849`(redis 双后端 × 2 worker);**分支**: feature/m3-ocr
- **结论**: M3 计划 T8 验收达成——1500 调用成功 1496(**99.73%**,阈值 98%),13 项裁决全 PASS(含跨进程记账归零与探针不悬挂两项 Redis 活检查)。
## 1. 场景与池(测试环境不放水)
| 项 | 配置 |
|---|---|
| 源池 | 源1=7866(真)、源2=7867(真,各 conc=4/rpm=120)、源3=黑洞 10.255.255.1(20s 连接超时)、源4=坏端口 7899(连接拒绝) |
| 负载 | `data/soak/chs_images/` 469 张真实图像循环;text/layout 实际 1222/308(≈8:2) |
| 装配 | `OcrClient.from_env(scope="SOAK_OCR")`,PGW_LIMITER/BREAKER_BACKEND=redis(db3),2 worker × 并发 8 |
## 2. 两轮结果
| 轮 | 后端 | 成功率 | 裁决 | 备注 |
|---|---|---|---|---|
| 首轮 `soak_20260721_232243` | memory × 1 worker × 并发 16 | 1496/1500(99.73%) | 10 PASS + 1 SKIP(记账归零活检查 memory 不可查) | 报告 tests/outputs/soak/ |
| **验收轮 `soak_20260722_002849`** | **redis × 2 worker × 并发 8** | **1496/1500(99.73%)** | **13/13 PASS** | 跨进程共享闸,贴 CHS 生产形态 |
关键分布(验收轮遥测 1530 行): 逐源尝试 monkey_1=765 / monkey_2=731 / monkey_3=14 / monkey_4=20——**坏源吸流仅 2.2%**(阈值 15%),且真源两处 1496 行**零错误**;全部 34 个错误行都在坏源上(TransientError,分类干净)。延迟 p50/p95 ≈ 17.3/29.4s(两端点几乎一致——排队主导,服务侧单请求 3-15s)。
## 3. 冷启动穿透现象(两轮各 4 例失败的唯一来源)
现象: 起跑首几秒,并发(16)超过健康源容量(2×4 许可),溢出调用在真源"忙碌无许可"时把 `_pick_runnable` 的"第一个可运行源"落到黑洞/坏端口上,3 次尝试全烧在坏源 → `AllSourcesExhausted(retry_exhausted)`。约 30-60s 内熔断对坏源开路(源4 连接拒绝快失败先开,源3 20s 超时后开)+ 冷却备忘接管,此后 1400+ 调用零失败,坏源仅剩半开探针级流量(14/20 次)。
定性: 与 M2.5 R4"可信替代被闸跳过后穿透垫底垃圾源"同族,但量级(0.27%)远低于门槛且自愈窗口有界;chat 侧因有 AIMD 起步并发 8 天然缓解。**本轮裁决: 不加机制**(YAGNI——两轮数据均达标;若未来下游对冷启动窗口敏感,候选方案是选源侧"健康低于门槛且存在更健康的忙源时等待优于穿透",届时按 M2.5 流程走设计补遗)。
## 4. 备注
- 首轮与验收轮失败数完全相同(各 4)纯属巧合,机理一致。
- OCR 无 token/成本(usage 恒 0),报告 token/cost 列为 0 属预期;TTFT 列恒 0(非流式,不适用)。
- `tables/para_blocks` 一致性抽查两轮各 20 张全 PASS(设计 §1.2 取证的持续护栏,累计 35+40 样本零不一致)。