3.5 KiB
3.5 KiB
织忆 MemoryWeave — 性能基准测试报告
测试时间: 2026-06-02 测试环境: localhost:7821, API Key: zhiyi-dev-key-2026 记忆总数: 1643 | Episodes: 7 | Backend: LanceDB (Rust IPC)
1. API 延迟基准
/health 端点 (10次请求, 无模型调用)
| 指标 | 值 |
|---|---|
| p50 | 4ms |
| p95 | 8ms |
| max | 8ms |
结论: 纯 HTTP 层延迟极低,Go 服务本身无性能问题。
2. 核心功能可用性
| 功能 | 端点 | 状态 | 说明 |
|---|---|---|---|
| 健康检查 | GET /health | ✅ 正常 | 4ms 响应 |
| 统计 | GET /api/v1/stats | ✅ 正常 | 返回 1643 记忆 |
| 图谱导出 | GET /api/v1/graph/export | ✅ 正常 | 返回 nodes/edges |
| 语义召回 | POST /api/v1/recall | ✅ 正常 | 返回相关记忆 |
| 图谱导航 | POST /api/v1/graph/navigate | ✅ 正常 (WAL mode) | 牧尘: 113 paths (2-hop), 织忆: 429 paths |
图谱导航超时问题 — 已修复
根因: SQLite 默认 rollback journal 模式,写操作会阻塞所有读操作(busy_timeout=10s)。当 merge/decay 触发写锁时,导航读请求等待超时。
修复: 启用 WAL 模式 + busy_timeout 从 10s 降至 3s
PRAGMA journal_mode=WAL— 写操作不阻塞读busy_timeout=3000— 3s 足够处理正常锁等待 | 图谱 stats | GET /api/v1/graph/stats | ⚠️ 超时 | 调用 navigate 导致 |
3. 语义召回质量 (recall)
测试查询: "牧尘 项目", top_k=5
count: 5
top results:
1. "牧尘偏好:话少直接,结论先行" (score=0.468)
2. "牧尘将织忆的 LLM 模型质量回溯功能从 MiniMax M2.7 切换至 Qwen3.5-122B" (score=0.446)
3. "牧尘今天在调试织忆的 LLM 模型质量回溯功能,从 MiniMax M2.7 换成了 Qwen3.5-122B,因为 M..." (score=0.396)
结论: 召回结果高度相关,语义搜索工作正常。
4. 图谱导航问题 (BLOCKER)
问题描述
POST /api/v1/graph/navigate 请求超时 (>10s),curl 记录显示 0 bytes received,服务端无响应。
可能原因
- BFS 死循环:
SQLiteGraphStore.Navigate对 disconnected graph 或环路处理不当 - DB 锁阻塞: 图谱写操作(merge/decay)与读操作竞争,导致读事务饥饿
- NavigateBiDir 伪实现: InMemoryGraph 的双向 BFS 是伪实现,直接委托单向 BFS(见
docs/BFS_GRAPH_EXPANSION_DESIGN.md)
已有设计修复
docs/BFS_GRAPH_EXPANSION_DESIGN.md 详细分析了 5 个缺陷,并给出 7 步修复计划 (E1.1~E1.7)。
5. 集成测试结果
测试框架: tests/integration_test.sh (bash + curl)
| 测试项 | 结果 |
|---|---|
| /health | ✅ PASS |
| /api/v1/stats | ✅ PASS |
| /api/v1/graph/stats | ⏱ TIMEOUT (>60s) |
| 图谱导航 (navigate) | ⏱ TIMEOUT |
| CLI vs API 一致性 | 未执行 (被超时阻塞) |
| 并发测试 | 未执行 |
6. 已知缺陷
| 优先级 | 缺陷 | 状态 |
|---|---|---|
| 🔴 P0 | 图谱导航超时 | ✅ 已修复 (WAL mode) |
| 🟡 P1 | InMemoryGraph.NavigateBiDir 伪实现 | 📋 见 BFS_GRAPH_EXPANSION_DESIGN.md E1.3 |
| 🟡 P1 | 图谱写事务锁竞争 | ✅ 已缓解 (WAL mode) |
7. 下一步行动
- E1.1~E1.7 实施: 按照
docs/BFS_GRAPH_EXPANSION_DESIGN.md逐步修复(双向 BFS 真正实现、环路检测等) - 重新跑集成测试: 修复后重新跑
tests/integration_test.sh,验证 100% 通过 - 并发压测: 50 并发请求 + 图谱写入同时进行,验证 WAL 效果
基准脚本: scripts/benchmark.sh