docs: 9/15-9/21 网关调用统计 + 接口2空图失败统计两篇
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# 2026-09-19~09-20 接口2 空图失败统计
|
||||
|
||||
- **统计窗口**:2026-09-19 00:00:00 ~ 2026-09-20 23:59:59(北京时间)
|
||||
- **生成时间**:2026-09-21 10:45
|
||||
|
||||
## 1. 要抓的失败
|
||||
|
||||
接口2(`POST /api/v1/hair/grow`)在 GPU worker 内部出错时,仍返回 HTTP 200、`code=0`,只把 `grown_image_*` 置空。只看业务码会当成成功。
|
||||
|
||||
| 判定 | 条件 |
|
||||
|------|------|
|
||||
| **真成功(出图)** | `code=0` 且至少一张生发图非空 |
|
||||
| **空图失败** | `code=0` 且有 `results`,但生发图全空 |
|
||||
| **业务码失败** | `code≠0` |
|
||||
|
||||
抓取:jsonl 里看 `results[].grown_image_url|base64`;9/19 18:53 之前 jsonl 已轮转,用 journal 的 `base64→URL: grown_image_base64` 与 `POST /hair/grow` 次数对照(白天每小时 rewrite ≥ 请求数,说明在出图)。
|
||||
|
||||
空图耗时中位约 **2.2~2.5s**;正常出图中位约 **16~23s**。
|
||||
|
||||
## 2. 两天接口2 合计
|
||||
|
||||
| 类别 | 9/19 | 9/20 | 两天合计 |
|
||||
|------|------|------|----------|
|
||||
| 调用量 | 4,958 | 3,352 | **8,310** |
|
||||
| 真成功(有生发图) | 1,968 | 701 | **2,669** |
|
||||
| **空图失败** | **2,988** | **2,649** | **5,637** |
|
||||
| 业务码失败 | 2 | 2 | 4 |
|
||||
| 按业务码成功率 | 99.96% | 99.94% | 99.95% |
|
||||
| **有效出图成功率** | **39.7%** | **20.9%** | **32.1%** |
|
||||
|
||||
9/19 调用量来自 journal(全日 4,958);空图 2,988 全部落在 jsonl 仍在的 18:53 之后,白天 journal 显示仍在出图,故空图数可视为全日完整。9/20 全日 jsonl。
|
||||
|
||||
把空图算失败后:两天有效成功 **2,669**,失败 **5,641**(空图 5,637 + 业务码 4)。
|
||||
|
||||
## 3. 连续故障段
|
||||
|
||||
不是两天各坏一段时间,而是**一段连续故障**:
|
||||
|
||||
| 节点 | 时间 |
|
||||
|------|------|
|
||||
| 9/19 白天~22:20 | 正常出图 |
|
||||
| 9/19 **22:30** | 开始大量空图(该 10 分钟 165 次里 19 张有图、146 张空) |
|
||||
| 9/19 **22:34:49** | 故障前最后一张生发图 |
|
||||
| 9/19 22:40 ~ 9/20 13:36 | **全部空图** |
|
||||
| 9/20 **13:36:54** | 恢复后第一张生发图 |
|
||||
| 9/20 13:40 以后 | 基本正常(偶发单次空图) |
|
||||
|
||||
故障段内空图:
|
||||
|
||||
| 时段 | 空图次数 |
|
||||
|------|----------|
|
||||
| 9/19 22:30–22:39 | 146(另 19 次仍出图,过渡) |
|
||||
| 9/19 22:40–24:00 | 2,835 |
|
||||
| 9/20 00:00–13:36 | 2,625 |
|
||||
| **连续故障空图合计** | **约 5,606** |
|
||||
|
||||
其中 9/20 00:00–00:50 有 2,127 次,来源 IP `47.93.63.201`(客户侧重试/批量)。
|
||||
|
||||
## 4. 按小时(接口2)
|
||||
|
||||
### 9/19
|
||||
|
||||
| 小时 | 调用 | 出图 | 空图 | 状态 |
|
||||
|------|------|------|------|------|
|
||||
| 00–21 | 1,840 | ≈1,832 | 7(零星) | 正常(journal + 18:53 后 jsonl) |
|
||||
| 22 | 849 | 136 | 713 | 22:30 起故障 |
|
||||
| 23 | 2,269 | 0 | 2,269 | 故障 |
|
||||
|
||||
18–21 点 jsonl 可核验:854 次出图、仅 7 次零星空图。
|
||||
|
||||
### 9/20
|
||||
|
||||
| 小时 | 调用 | 出图 | 空图 | 状态 |
|
||||
|------|------|------|------|------|
|
||||
| 00 | 2,127 | 0 | 2,127 | 故障 |
|
||||
| 01–12 | 417 | 0 | 417 | 故障 |
|
||||
| 13 | 125 | 32 | 93 | 13:36 恢复 |
|
||||
| 14–18 | 354 | 354 | 0 | 正常 |
|
||||
| 19–20 | 177 | 165 | 12 | 正常,少量单次空图 |
|
||||
| 21–23 | 152 | 150 | 0 | 正常(另 2 次业务码失败) |
|
||||
|
||||
## 5. 9/20 其它接口(业务码,供对照)
|
||||
|
||||
| 接口 | 调用量 | `code=0` | 业务码失败 |
|
||||
|------|--------|----------|------------|
|
||||
| 接口1 四庭七眼 | 380 | 361 | 19 |
|
||||
| 接口4 特征 | 347 | 345 | 2 |
|
||||
| 接口99 特殊点 | 344 | 344 | 0 |
|
||||
| 接口5 发际线 | 248 | 248 | 0(但 247 次无生发图,全天) |
|
||||
| 接口6 测量 v2 | 105 | 75 | 30 |
|
||||
|
||||
9/20 按业务码成功率 98.89%,同样会漏掉接口2 空图。接口5 当天几乎也无生发图,主结论仍以接口2 为准。
|
||||
|
||||
## 6. 结论
|
||||
|
||||
1. 故障从 **9/19 22:30** 开始,到 **9/20 13:36** 结束,约 **15 小时**。
|
||||
2. 两天空图失败 **5,637** 次(9/19 的 2,988 + 9/20 的 2,649),占两天接口2 的 **67.8%**。
|
||||
3. 有效出图 **2,669** 次,有效成功率 **32.1%**;只看 `code=0` 则是 99.95%。
|
||||
4. 9/19 白天(22:30 前)journal 显示仍在落盘生发图,空图集中在当晚 22:30 之后并跨到次日下午。
|
||||
@@ -0,0 +1,7 @@
|
||||
# 2026-09-20 调用成败统计(含接口2「秒回无图」)
|
||||
|
||||
本文已并入两天统计,请看:
|
||||
|
||||
**[20260919-20_接口2空图失败统计.md](20260919-20_接口2空图失败统计.md)**
|
||||
|
||||
覆盖 9/19~9/20。故障从 **9/19 22:30** 持续到 **9/20 13:36**,两天空图失败合计 **5,637** 次。
|
||||
@@ -9,6 +9,8 @@
|
||||
| [接口文档.md](接口文档.md) | 对外 API 契约(字段 / 错误码)。字段命名的唯一权威。 |
|
||||
| [旷视具体需求.md](旷视具体需求.md) | 原始需求。 |
|
||||
| [../OFFLINE_ASSETS.md](../OFFLINE_ASSETS.md) | worker 离线模型权重/字体清单(内网部署)。 |
|
||||
| [最近一周调用统计_20260915-20260921.md](最近一周调用统计_20260915-20260921.md) | 2026-09-15~09-21 网关调用量、接口构成、成功率。 |
|
||||
| [20260919-20_接口2空图失败统计.md](20260919-20_接口2空图失败统计.md) | 9/19~9/20 接口2 `code=0` 但无生发图(GPU 内部错误,跨午夜连续故障)。 |
|
||||
|
||||
> 原先分散的「各接口技术方案 / 开发任务书 / 系统架构 / 网关任务书」已合并进 `实现说明.md`
|
||||
> (细节可查 git 历史)。
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
# 最近一周接口调用统计
|
||||
|
||||
- **统计窗口**:2026-09-15 00:00:00 ~ 2026-09-21 10:13:00(北京时间,共 7 个自然日;21 日为截至上午的部分数据)
|
||||
- **统计对象**:网关 `hair.xiangsilian.com` 对外业务接口(`POST /api/v1/...`)
|
||||
- **不含**:健康检查、静态页、扫描探测(如 `GET /api/.env`)
|
||||
- **生成时间**:2026-09-21 10:13
|
||||
|
||||
## 1. 口径
|
||||
|
||||
| 指标 | 定义 |
|
||||
|------|------|
|
||||
| 调用量 | 网关访问日志中,下列业务路径的完成次数 |
|
||||
| 业务成功 | HTTP 200 **且** 响应 JSON `code=0`(或无 `code`) |
|
||||
| 业务失败 | 非上述情况(含业务错误码 1001/1003/1008,以及 HTTP 405 等) |
|
||||
| HTTP 完成 | uvicorn 记录的 HTTP 200,**不区分**业务码 |
|
||||
|
||||
`request_log.jsonl` 已轮转,**9/15–9/18 全日、9/19 白天**只剩 systemd journal,这些天的调用量按 journal 统计;业务成功率仅在仍保留 jsonl 的时段可精确计算(见第 4 节)。
|
||||
|
||||
业务接口清单:
|
||||
|
||||
| 接口 | 路径 |
|
||||
|------|------|
|
||||
| 1 四庭七眼测量 | `/api/v1/face/measure` |
|
||||
| 2 C 端生发 | `/api/v1/hair/grow` |
|
||||
| 3 B 端生发 | `/api/v1/hair/grow-b` |
|
||||
| 4 用户特征分析 | `/api/v1/face/features` |
|
||||
| 5 发际线 PNG | `/api/v1/hairline/generate` |
|
||||
| 6 四庭七眼 v2 | `/api/v1/face/measure-v2` |
|
||||
| 7 C 端生发 v2 | `/api/v1/hair/grow-v2`(已弃用,基本无流量) |
|
||||
|
||||
## 2. 总览
|
||||
|
||||
| 项 | 数值 |
|
||||
|----|------|
|
||||
| 7 日合计调用量 | **20,104** |
|
||||
| 完整 6 日(9/15–9/20)合计 | **19,824** |
|
||||
| 完整 6 日日均 | **3,304** |
|
||||
| 峰值日 | **9/19(周六)8,234** |
|
||||
| 最低完整日 | **9/15(周二)1,258** |
|
||||
| 9/21 截至 10:13 | **280** |
|
||||
|
||||
主接口构成(7 日合计):
|
||||
|
||||
| 接口 | 次数 | 占比 |
|
||||
|------|------|------|
|
||||
| 接口2 C 端生发 | 12,470 | 62.0% |
|
||||
| 接口4 特征分析 | 3,025 | 15.0% |
|
||||
| 接口1 四庭七眼 | 2,800 | 13.9% |
|
||||
| 接口5 发际线 | 1,243 | 6.2% |
|
||||
| 接口6 四庭七眼 v2 | 562 | 2.8% |
|
||||
| 接口3 / 接口7 等 | 4 | <0.1% |
|
||||
|
||||
## 3. 按日调用量
|
||||
|
||||
| 日期 | 星期 | 调用量 | 接口2 生发 | 接口4 特征 | 接口1 测量 | 接口5 发际线 | 接口6 测量v2 | 数据来源 |
|
||||
|------|------|--------|------------|------------|------------|--------------|--------------|----------|
|
||||
| 9/15 | 周二 | 1,258 | 643 | 171 | 174 | 170 | 100 | journal |
|
||||
| 9/16 | 周三 | 1,688 | 921 | 236 | 285 | 169 | 75 | journal |
|
||||
| 9/17 | 周四 | 1,789 | 1,069 | 254 | 232 | 183 | 51 | journal |
|
||||
| 9/18 | 周五 | 2,429 | 1,350 | 432 | 381 | 189 | 77 | journal |
|
||||
| 9/19 | 周六 | **8,234** | 4,959 | 1,531 | 1,302 | 287 | 153 | journal |
|
||||
| 9/20 | 周日 | 4,426 | 3,350 | 347 | 380 | 244 | 105 | jsonl / journal 互核 |
|
||||
| 9/21 | 周一 | 280 | 178 | 54 | 46 | 0 | 1 | journal(截至 10:13) |
|
||||
| **合计** | | **20,104** | **12,470** | **3,025** | **2,800** | **1,243** | **562** | |
|
||||
|
||||
9/16 另有接口3 共 2 次;9/19 有接口3、接口7 各 1 次(均为 405,见失败说明)。
|
||||
|
||||
工作日(9/15–9/18)在 1.3k~2.4k / 天,周六冲到 8.2k,周日回落到 4.4k,仍高于工作日。增量主要来自接口2。
|
||||
|
||||
## 4. 成功率
|
||||
|
||||
分两层看:HTTP 几乎全部 200;**业务是否成功要以 `code=0` 为准**。
|
||||
|
||||
### 4.1 HTTP 完成率(全窗口,journal)
|
||||
|
||||
20,104 次中 HTTP 200 为 **20,098**,**99.97%**。非 200 仅 **6 次 HTTP 405**(均为外部对业务路径发 GET,不是客户 POST)。
|
||||
|
||||
| 日期 | 调用量 | HTTP 200 | HTTP 成功率 |
|
||||
|------|--------|----------|-------------|
|
||||
| 9/15 | 1,258 | 1,258 | 100% |
|
||||
| 9/16 | 1,688 | 1,688 | 100% |
|
||||
| 9/17 | 1,789 | 1,789 | 100% |
|
||||
| 9/18 | 2,429 | 2,429 | 100% |
|
||||
| 9/19 | 8,234 | 8,228 | 99.93%(6 次 405) |
|
||||
| 9/20 | 4,426 | 4,426 | 100% |
|
||||
| 9/21 截至 10:13 | 280 | 280 | 100% |
|
||||
|
||||
### 4.2 业务成功率(`code=0`,jsonl 可核验时段)
|
||||
|
||||
jsonl 当前只覆盖 **9/19 18:53 之后、9/20 全日、9/21 截至 10:13**,共 **9,720** 次:
|
||||
|
||||
| 时段 | 调用量 | 业务成功 | 业务失败 | 业务成功率 |
|
||||
|------|--------|----------|----------|------------|
|
||||
| 9/19 18:53–24:00 | 5,011 | 4,991 | 20 | 99.60% |
|
||||
| 9/20 全日 | 4,432 | 4,379 | 53 | 98.80% |
|
||||
| 9/21 00:00–10:13 | 277 | 267 | 10 | 96.39% |
|
||||
| **可核验合计** | **9,720** | **9,637** | **83** | **99.15%** |
|
||||
|
||||
按接口(同一 jsonl 窗口):
|
||||
|
||||
| 接口 | 调用量 | 业务成功 | 失败 | 成功率 |
|
||||
|------|--------|----------|------|--------|
|
||||
| 接口2 C 端生发 | 7,373 | 7,369 | 4 | 99.95% |
|
||||
| 接口5 发际线 | 354 | 353 | 1 | 99.72% |
|
||||
| 接口4 特征分析 | 670 | 661 | 9 | 98.66% |
|
||||
| 接口1 四庭七眼 | 1,157 | 1,120 | 37 | 96.80% |
|
||||
| 接口6 四庭七眼 v2 | 164 | 134 | 30 | 81.71% |
|
||||
|
||||
接口6 成功率偏低,失败几乎全是 `1003 角度问题,请上传正面照`(照片侧脸/角度,不是服务宕机)。接口1 同类原因也较多。
|
||||
|
||||
### 4.3 可核验窗口内的失败原因(83 次)
|
||||
|
||||
| 次数 | HTTP | 业务码 | 含义 |
|
||||
|------|------|--------|------|
|
||||
| 60 | 200 | 1003 | 角度问题,请上传正面照 |
|
||||
| 15 | 200 | 1001 | 无法识别人像 |
|
||||
| 6 | 405 | — | 对业务路径发 GET(扫描,非客户) |
|
||||
| 2 | 200 | 1008 | 图片下载失败或格式不支持 |
|
||||
|
||||
没有出现批量 `1007 后端服务暂不可用` / 排队超时。失败以**入图不合规**为主,不是网关或 GPU worker 整段掉线。
|
||||
|
||||
## 5. 接口2:业务成功 ≠ 一定出了生发图
|
||||
|
||||
接口2 在 ComfyUI / change_hair 失败时仍返回 `code=0`,只是 `grown_image_*` 为 `null`(测试页会显示「ComfyUI 未就绪或生成失败」)。因此第 4 节的成功率**不能**当成「生发图都生成了」。
|
||||
|
||||
jsonl 可核验的接口2 出图情况:
|
||||
|
||||
| 日期 | 接口2 次数 | 业务成功 | 含生发图 | 生发图为空 |
|
||||
|------|------------|----------|----------|------------|
|
||||
| 9/19 18:53 后 | 3,844 | 3,842 | 854 | 2,988 |
|
||||
| 9/20 | 3,352 | 3,350 | 701 | 2,649 |
|
||||
| 9/21 截至 10:13 | 178 | 178 | **178** | **0** |
|
||||
|
||||
9/19–9/20 大量请求只返回了发际线叠图、没有生发效果图(与当时 GPU 上 change_hair「用户图像加载失败」一致)。**9/21 上午接口2 已全部带生发图**。
|
||||
|
||||
## 6. 数据来源与局限
|
||||
|
||||
- 调用量:`journalctl -u hair-gateway` 中 uvicorn 访问日志(`POST /api/v1/...`)。
|
||||
- 业务码 / 失败原因 / 是否含 `grown_image`:`gateway/request_log.jsonl`(及 `.jsonl.1`)。轮转后目前最早一条为 **2026-09-19 18:53**。
|
||||
- 9/15–9/18 没有业务码明细,不能把 HTTP 100% 等同于业务 100%。
|
||||
- 接口4 在网关本机执行(豆包),不占 GPU worker;其余表内接口转发 worker。
|
||||
|
||||
---
|
||||
|
||||
*本文只做观测统计,不包含代码或配置变更。*
|
||||
Reference in New Issue
Block a user