性能自动调优
版本: v1.0.0+ | 实时监控 | 规则引擎 | 参数自动调整 | 负载预测
性能自动调优系统持续监控应用性能指标,通过规则引擎自动调整配置参数,确保最优运行状态。
核心特性
- 📊 6 阶段管道追踪: 从意图识别到完整管道,全链路性能监控与百分位统计(P50/P90/P95/P99)
- 🔍 瓶颈自动识别: 实时检测性能瓶颈,自动生成优化建议
- ⚙️ 5 条内置规则: 数据库慢查询、数据库碎片、LLM 高延迟、内存压力、P2P 连接数自动调优
- ❄️ 冷却期防抖: 每条规则 10 分钟冷却期,避免频繁调优震荡
- 📈 调优历史记录: 完整记录每次调优动作,支持 500 条历史回溯
系统架构
性能数据源
│
▼
┌──────────────────────┐
│ PerformanceMonitor │
│ (6阶段管道追踪) │
│ ├─ intent_recognition│
│ ├─ task_planning │
│ ���─ tool_execution │
│ ├─ rag_retrieval │
│ ├─ llm_calls │
│ └─ total_pipeline │
└──────────┬───────────┘
│ 指标采集 (每5分钟)
▼
┌──────────────────────┐
│ AutoTuner │
│ ┌────────────────┐ │
│ │ 规则引擎 │ │
│ │ (5内置+自定义) │ │
│ └───────┬────────┘ │
│ ▼ │
│ ┌────────────────┐ │
│ │ 冷却期检查 │ │
│ └───────┬────────┘ │
│ ▼ │
│ ┌────────────────┐ │
│ │ 调优动作执行 │ │
│ └────────────────┘ │
└──────────────────────┘系统概述
双层架构
性能系统
├─ PerformanceMonitor (监控层)
│ ├─ 6 阶段 AI 管道性能追踪
│ ├─ 百分位统计 (P50/P90/P95/P99)
│ ├─ 瓶颈识别
│ └─ 优化建议生成
└─ AutoTuner (调优层)
├─ 规则引擎(内置 + 自定义规则)
├─ 冷却期防抖
├─ 调优历史记录
└─ 自动参数调整性能监控
追踪的管道阶段
| 阶段 | 说明 | 警告阈值 | 危险阈值 |
|---|---|---|---|
intent_recognition | 意图识别 | 可配置 | 可配置 |
task_planning | 任务规划 | 可配置 | 可配置 |
tool_execution | 工具执行 | 可配置 | 可配置 |
rag_retrieval | RAG 检索 | 可配置 | 可配置 |
llm_calls | LLM 调用 | 可配置 | 可配置 |
total_pipeline | 完整管道 | 可配置 | 可配置 |
统计指标
每个阶段统计:
├─ 平均耗时 (Mean)
├─ P50 (中位数)
├─ P90
├─ P95
├─ P99
├─ 最小值 / 最大值
├─ 调用次数
└─ 异常比例瓶颈识别
系统自动识别管道中的性能瓶颈并生成优化建议:
瓶颈分析:
RAG 检索阶段 P95 = 2500ms (警告)
→ 建议: 优化向量索引, 减少检索文档数量
→ 建议: 启用 BM25 预过滤减少候选集自动调优
内置规则
| 规则 | 触发条件 | 调优动作 | 冷却期 |
|---|---|---|---|
db-slow-queries | 数据库查询慢 | 增大 SQLite 缓存,启用 WAL | 10分钟 |
db-vacuum | 数据库碎片多 | 执行 VACUUM | 10分钟 |
llm-high-latency | LLM 响应慢 | 缩小上下文窗口 | 10分钟 |
memory-pressure | 内存压力大 | 触发 GC,发出警告 | 10分钟 |
p2p-connections | P2P 连接数过多 | 降低连接上限 | 10分钟 |
规则引擎配置
json
{
"autoTuner": {
"evaluationIntervalMs": 300000,
"cooldownMs": 600000,
"maxHistoryEntries": 500,
"rules": [
{
"name": "custom-rule",
"condition": "metrics.cpuUsage > 80",
"action": "reduceParallelism",
"cooldownMs": 300000
}
]
}
}调优流程
1. 定期采集性能指标(默认每 5 分钟)
2. 评估所有规则条件
3. 条件满足 → 检查冷却期
4. 冷却期已过 → 执行调优动作
5. 记录调优历史
6. 发出事件通知数据库表
performance_metrics
| 字段 | 类型 | 说明 |
|---|---|---|
id | INTEGER | 主键 |
phase | TEXT | 管道阶段 |
duration | REAL | 耗时(毫秒) |
metadata | TEXT | 附加信息(JSON) |
session_id | TEXT | 会话 ID |
created_at | DATETIME | 记录时间 |
关键文件
| 文件 | 职责 |
|---|---|
src/main/monitoring/performance-monitor.js | 性能监控器(6 阶段追踪) |
src/main/performance/auto-tuner.js | 自动调优引擎(规则引擎) |
src/main/performance/performance-monitor.js | 性能数据采集器 |
