From a2554c9df02cbd30dc8c911e6abd36a01e602d63 Mon Sep 17 00:00:00 2001 From: ericwyuan Date: Thu, 20 Aug 2026 15:36:35 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20update=20PROGRESS.md=20-=20=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E4=B8=8A=E4=BC=A0=E9=97=AE=E9=A2=98=E6=A0=B9=E5=9B=A0?= =?UTF-8?q?(=E7=BD=91=E7=BB=9C+=E9=80=BB=E8=BE=91=E5=8F=8C=E5=8F=A0?= =?UTF-8?q?=E5=8A=A0)=E4=B8=8E=E5=9B=9B=E9=A1=B9=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROGRESS.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/PROGRESS.md b/PROGRESS.md index 690b2ec..c4acee2 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,6 +1,6 @@ # 项目进度追踪 -> 最后更新: 2026-08-20 14:20 +> 最后更新: 2026-08-20 15:45 ## 服务运行状态 @@ -161,6 +161,29 @@ 19. **chunk_size 变更防护** - Edge 端 upload_chunk 检测 total_chunks 变更(由 chunk_size 变化导致),自动清理旧分块防止混合不同大小分块导致 assemble 后文件损坏。NAS 端 _query_uploaded_chunks 比对 expected_total != edge_total 时跳过断点续传 20. **看门狗机制** - app.py 启动 daemon 看门狗线程,每 60s 检查 scheduler/dispatcher/poller 线程 is_alive(),崩溃自动 check_and_restart()。/api/status 改用 thread.is_alive() 替代 _running 标志,防止线程假死误报 +## 视频上传问题根因排查与修复 (2026-08-20 15:45, commit 8cb5553) + +**问题定性**: 网络问题 + 逻辑问题双重叠加 + +**网络层(已解决)**: NAS→Oracle 跨境上行带宽仅 ~1Mbps,360MB 原始视频上传需 10-20 分钟且频繁超时。 +方案: NAS 端 FFmpeg 预压缩 (480p/CRF28/veryfast, 36 倍压缩比 360MB→22MB) + 5MB 分块断点续传。 + +**逻辑层(本次修复)**: 压缩方案生效后上传成功,但 Edge 端分析全部失败 "All models failed in visual analysis": + +| # | Bug | 根因 | 修复 | +|---|-----|------|------| +| 1 | 全部视觉模型调用失败 | Edge 服务手动重启时未 source .env,GEMINI/NVIDIA API key 丢失 | config_loader 启动时自动加载 .env(export KEY=VALUE 格式,不覆盖已有环境变量) | +| 2 | 失败结果黑洞 | get_undelivered_results 只查 SUCCESS,FAILED 永不回传 NAS | 包含 FAILED 状态,/results 构造 failed 负载,NAS Poller 标记任务 FAILED | +| 3 | 重派发死锁 | INSERT OR IGNORE + UNIQUE(nas_task_id),失败后重传被静默忽略 | enqueue 检测 FAILED/已交付 SUCCESS 行时重置为 PENDING 重跑 | +| 4 | Poller 落库崩溃 | db_layer valid_stages 含 'process' 但 MariaDB ENUM 不含 → pymysql DataError 1265 | ALTER TABLE 扩展 ENUM + ddl.sql 同步 | + +**验证结果**: +- Task 293 (压缩后 22.2MB): NVIDIA 降级路径分析成功,event_id=13 落库(Gemini 临时 503 自动降级) +- Task 295: 全链路成功 event_id=14(压缩 9.3min → 上传 1min → 分析 55s → Poller 落库) +- 流水线单任务周期 ~12 分钟,积压 ~20 个任务自动消化中 + +**运维要点**: Edge 重启务必 `source /opt/fam-edge/.env` 或使用 start_gunicorn.sh(代码已兜底自动加载 .env,双保险) + ## 真实视频性能基准测试 (2026-08-20) 测试视频: `Generic_ONVIF-001-20260819-210403` (30分钟, 360MB, 1080p H.264)