# 03 Performance

> Optimizes Dify workflows and plugins by restructuring graphs, reducing LLM token usage, tuning worker pools, and improving parallel processing.

- Skill: `systemtce/03-performance` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add systemtce/03-performance`
- Raw SKILL.md: https://api.skillmd.com/api/skills/systemtce/03-performance/raw
- Safety review: CAUTION (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra, AI & ML, Coding & Dev Tools, Model Training & Fine-tuning, Monitoring & Observability
- Tags: Caching, Dify, Llm Cost, Parallel Processing, Performance Monitoring, Worker Pool, Workflow Optimization
- Author: SystemTce (https://skillmd.com/u/systemtce)
- Updated: 2026-08-22
- Page: https://skillmd.com/skills/systemtce/03-performance

---


# Dify 性能优化 SKILL

## 概述

本 SKILL 提供 Dify 工作流和插件的全面性能优化指南,涵盖图结构优化、LLM 成本控制、Worker 池调优、变量池优化、并行处理和性能监控等核心主题。

### 适用场景

当您遇到以下情况时,应使用本 SKILL:

- ⏱️ 工作流执行时间过长,需要性能优化
- 💰 LLM API 成本过高,需要降低 Token 消耗
- 🚀 并发处理能力不足,需要提升吞吐量
- 📊 系统资源利用率低,需要优化配置
- 📈 大规模数据处理性能瓶颈
- 🔍 需要进行性能诊断和监控

### 核心价值

- **可量化的优化效果**: 并行分支执行减少 40-60% 时间,LLM 缓存减少 30-50% 调用
- **实战案例驱动**: 5 个真实优化案例,包含优化前后对比
- **全面的优化策略**: 覆盖工作流、LLM、插件、监控等所有层面
- **快速诊断工具**: 5 个维度的性能诊断清单

---

## 快速诊断清单

在开始优化之前,使用以下清单快速定位性能问题:

### 📊 图结构诊断

- [ ] 是否存在过多串行依赖?
- [ ] 是否可以使用并行分支? (v0.8.0+)
- [ ] 是否有不必要的节点和连接?
- [ ] 节点数量是否超过 50 个?
- [ ] 是否使用了合适的设计模式?

### 🤖 LLM 使用诊断

- [ ] 模型选择是否合适? (轻量任务用轻量模型)
- [ ] Prompt 是否过长? (可以精简吗?)
- [ ] 是否启用了 LLM 响应缓存?
- [ ] 是否使用了结构化输出? (JSON Schema)
- [ ] Token 消耗是否在预算内?

### ⚙️ Worker 池诊断

- [ ] Worker 数量配置是否合理? (2-8 线程)
- [ ] 队列深度是否过大?
- [ ] 是否存在 Worker 空闲浪费?
- [ ] 扩缩容策略是否合理?

### 💾 变量池诊断

- [ ] 是否在变量池中存储了大对象?
- [ ] 变量是否及时清理?
- [ ] 是否使用了引用而非复制?
- [ ] 变量作用域是否合理?

### 🔄 并发处理诊断

- [ ] 迭代器是否配置了 parallel_nums?
- [ ] 是否使用了流式响应?
- [ ] 异步任务是否合理配置?
- [ ] 是否存在阻塞操作?

---

## 第一部分: 图结构优化

### 1.1 减少串行依赖

**问题**: 过多的串行依赖导致工作流执行时间线性增长。

**优化策略**:

1. **识别可并行的节点**: 分析节点间的依赖关系,找出可以并行执行的节点
2. **使用并行分支**: Dify v0.8.0+ 支持并行分支功能
3. **重构工作流**: 将串行流程重构为并行+聚合模式

**示例**:

```yaml
# 优化前: 串行执行 (总时间 = 3 + 2 + 4 = 9秒)
Start → API调用1(3s) → API调用2(2s) → API调用3(4s) → End

# 优化后: 并行执行 (总时间 = max(3,2,4) = 4秒)
Start → [API调用1(3s), API调用2(2s), API调用3(4s)] → 变量聚合 → End
```

**优化效果**: 执行时间减少 40-60%

### 1.2 并行分支功能 (v0.8.0+)

Dify v0.8.0 引入了并行分支功能,允许多个分支同时执行。

**使用方法**:

1. 在工作流编辑器中创建多个分支
2. 确保分支间没有数据依赖
3. 使用变量聚合器收集结果

**适用场景**:
- 多个 HTTP Request 节点并行调用
- 多个 Tool 节点并行执行
- 知识库检索 + API 调用并行处理
- 多模型并行推理 (模型对比场景)

**配置示例**:

```yaml
# 并行分支配置
parallel_branches:
  - branch_1:
      nodes: [http_request_1, code_1]
  - branch_2:
      nodes: [http_request_2, code_2]
  - branch_3:
      nodes: [tool_1, llm_1]
```

### 1.3 避免不必要的节点

**常见问题**:
- 冗余的数据转换节点
- 不必要的中间变量节点
- 过度的条件判断节点

**优化建议**:
- 合并相似的处理逻辑
- 使用代码节点替代多个简单节点
- 简化条件判断逻辑

### 1.4 图结构设计模式

根据任务类型选择合适的设计模式:

1. **顺序管道**: Start → LLM → End (简单任务)
2. **条件分支**: Start → LLM → If-Else → 多路径 (决策任务)
3. **迭代处理**: Start → Code → Iteration → LLM (批量任务)
4. **知识检索**: Start → Knowledge-Retrieval → LLM (RAG 应用)
5. **多源聚合**: 多个 Tool/HTTP → Variable-Aggregator → LLM (数据聚合)

**详细文档**: 参见 [workflow-optimization/graph-structure.md](workflow-optimization/graph-structure.md)

---

## 第二部分: LLM 优化策略

### 2.1 模型选择策略

选择合适的模型是成本优化的关键。

**模型选择矩阵**:

| 任务类型 | 推荐模型 | Token 成本 | 适用场景 |
|---------|---------|-----------|---------|
| 简单分类 | Qwen-Turbo, Gemini Flash | 低 | 文本分类、情感分析 |
| 文本生成 | GPT-3.5-turbo, Qwen-Plus | 中 | 内容生成、摘要 |
| 复杂推理 | GPT-4, Claude Opus | 高 | 复杂分析、决策 |
| 本地部署 | Ollama (Llama 3, Qwen) | 零 API 成本 | 隐私敏感场景 |

**成本对比**:
- GPT-4: $0.03/1K tokens (输入) + $0.06/1K tokens (输出)
- GPT-3.5-turbo: $0.0015/1K tokens (输入) + $0.002/1K tokens (输出)
- Qwen-Turbo: ¥0.0008/1K tokens (约 20 倍成本差异)

**优化建议**:
- 轻量任务使用轻量模型 (Qwen/Gemini)
- 复杂任务使用强力模型 (GPT-4/Claude)
- 考虑使用本地模型 (Ollama) 降低成本

### 2.2 Prompt 优化技巧

**精简 Prompt**:

```python
# 优化前 (150 tokens)
"""
你是一个专业的客服助手。请仔细阅读以下客户问题,并根据我们的产品知识库,
提供详细、准确、友好的回答。回答时请注意以下几点:
1. 保持专业和礼貌的语气
2. 提供具体的解决方案
3. 如果不确定,请说明
4. 引用相关的产品文档

客户问题: {query}
"""

# 优化后 (50 tokens)
"""
作为客服助手,根据知识库回答客户问题,保持专业礼貌。

问题: {query}
"""
```

**Token 节省**: 66% (150 → 50 tokens)

**其他优化技巧**:
- 移除冗余的说明和示例
- 使用简洁的指令
- 避免重复的上下文
- 使用结构化输出减少解析成本

### 2.3 缓存策略

**LLM 响应缓存**:

使用 Redis 缓存 LLM 响应,避免重复调用。

**实现方案**:

```python
import hashlib
import redis

# 连接 Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def get_llm_response_with_cache(prompt, model="gpt-3.5-turbo"):
    # 生成缓存键
    cache_key = f"llm:{model}:{hashlib.md5(prompt.encode()).hexdigest()}"

    # 检查缓存
    cached = r.get(cache_key)
    if cached:
        return cached.decode('utf-8')

    # 调用 LLM
    response = call_llm_api(prompt, model)

    # 存储缓存 (TTL: 1小时)
    r.setex(cache_key, 3600, response)

    return response
```

**缓存策略**:
- **LLM 响应缓存**: 相同 Prompt 返回缓存结果
- **知识库检索缓存**: 相同查询返回缓存向量
- **节点结果缓存**: 避免重复执行相同节点

**优化效果**: API 调用减少 30-50%

### 2.4 结构化输出

使用 JSON Schema 确保 LLM 输出稳定性,减少解析错误和重试。

**配置示例**:

```json
{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": ["技术", "销售", "售后"]
    },
    "priority": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "summary": {
      "type": "string",
      "maxLength": 100
    }
  },
  "required": ["category", "priority", "summary"]
}
```

**优化效果**:
- 减少输出 Token 数量
- 避免解析错误和重试
- 提升下游节点处理效率

**详细文档**: 参见 [llm-optimization/](llm-optimization/)

---

## 第三部分: Worker 池调优

### 3.1 动态工作线程池

Dify 使用动态 Worker 池并行执行节点,默认配置为 2-8 个工作线程。

**Worker 池架构**:

```
GraphEngine
├── ReadyQueue (就绪节点队列)
├── EventQueue (事件队列)
├── Dispatcher (事件分发器)
└── WorkerPool (2-8 个工作线程)
    ├── Worker 1
    ├── Worker 2
    ├── ...
    └── Worker N
```

### 3.2 配置参数

**关键配置**:

| 参数 | 默认值 | 说明 | 优化建议 |
|-----|-------|------|---------|
| min_workers | 2 | 最小 Worker 数量 | 根据最小并发需求设置 |
| max_workers | 8 | 最大 Worker 数量 | 根据 CPU 核心数设置 |
| queue_depth_threshold | 10 | 扩容触发阈值 | 根据平均队列深度调整 |
| idle_timeout | 60s | Worker 空闲超时 | 根据任务频率调整 |

**扩缩容策略**:

```python
# 扩容条件
if queue_depth > queue_depth_threshold and workers < max_workers:
    add_worker()

# 缩容条件
if worker_idle_time > idle_timeout and workers > min_workers:
    remove_worker()
```

### 3.3 性能基准

**测试场景**: 100 个节点的工作流

| Worker 数量 | 执行时间 | 吞吐量 | CPU 使用率 |
|-----------|---------|--------|-----------|
| 2 | 45s | 2.2 节点/s | 40% |
| 4 | 25s | 4.0 节点/s | 70% |
| 8 | 15s | 6.7 节点/s | 95% |

**优化效果**: Worker 数量从 2 增加到 8,吞吐量提升 3x

### 3.4 优化建议

1. **根据 CPU 核心数设置 max_workers**: 通常设置为 CPU 核心数的 1-2 倍
2. **监控队列深度**: 如果队列深度持续较高,增加 max_workers
3. **避免过度扩容**: Worker 过多会导致上下文切换开销
4. **使用异步 I/O**: 对于 I/O 密集型任务,使用异步处理提升效率

**详细文档**: 参见 [workflow-optimization/parallel-execution.md](workflow-optimization/parallel-execution.md)

---

## 第四部分: 变量池优化

### 4.1 避免存储大对象

**问题**: 在变量池中存储大对象 (如大文件、长文本) 会占用大量内存。

**优化策略**:

```python
# ❌ 不推荐: 存储大对象
variables = {
    "large_file": open("large_file.pdf", "rb").read(),  # 10MB
    "long_text": "..." * 100000  # 1MB
}

# ✅ 推荐: 存储引用
variables = {
    "file_path": "/path/to/large_file.pdf",
    "text_summary": summarize(long_text)  # 只存储摘要
}
```

### 4.2 使用引用而非复制

**问题**: 变量复制会增加内存占用和处理时间。

**优化策略**:

```python
# ❌ 不推荐: 复制变量
result = process_data(data.copy())

# ✅ 推荐: 使用引用
result = process_data(data)  # 只读操作使用引用
```

### 4.3 及时清理变量

**问题**: 不再使用的变量占用内存。

**优化策略**:

```python
# 在代码节点中清理不再使用的变量
def main(args):
    # 处理数据
    large_data = process_large_data(args["input"])
    result = extract_result(large_data)

    # 清理大对象
    del large_data

    return {"result": result}
```

### 4.4 变量作用域管理

**变量类型**:
- **系统变量**: `sys.query`, `sys.files`, `sys.conversation_id`
- **节点变量**: `{{#node_id.output#}}`
- **环境变量**: 配置和密钥管理
- **迭代变量**: 循环中的当前项和索引

**优化建议**:
- 使用最小作用域
- 避免全局变量污染
- 及时释放临时变量

**详细文档**: 参见 [workflow-optimization/variable-pool.md](workflow-optimization/variable-pool.md)

---

## 第五部分: 并行处理和流式响应

### 5.1 迭代器并行处理

使用迭代器的 `parallel_nums` 参数并行处理数组数据。

**配置示例**:

```yaml
iteration_node:
  type: iteration
  inputs:
    items: "{{#code_node.output.items#}}"
  config:
    parallel_nums: 5  # 并行处理 5 个项目
```

**性能对比**:

| 数据量 | 串行处理 | 并行处理 (5) | 提升 |
|-------|---------|-------------|-----|
| 10 项 | 20s | 5s | 4x |
| 50 项 | 100s | 25s | 4x |
| 100 项 | 200s | 50s | 4x |

### 5.2 流式响应

使用流式响应提升用户体验,减少首字节时间 (TTFB)。

**实现方式**:

```python
# API 调用启用流式响应
response = requests.post(
    "https://api.dify.ai/v1/workflows/run",
    headers={"Authorization": f"Bearer {api_key}"},
    json={"inputs": {...}, "response_mode": "streaming"},
    stream=True
)

for line in response.iter_lines():
    if line:
        event = json.loads(line)
        print(event["data"])
```

**优化效果**:
- TTFB 减少 80%
- 用户感知响应时间减少 50%

### 5.3 异步任务处理

使用 Celery 异步处理长时间运行的任务。

**架构**:

```
API Server → Celery Queue → Worker Pool → Task Execution
```

**适用场景**:
- 大文件处理
- 批量数据导入
- 长时间 API 调用
- 定时任务

### 5.4 事件驱动架构优化

Dify 采用事件驱动架构,节点执行产生事件流。

**优化策略**:
- 使用非阻塞事件处理
- 批量处理事件队列
- 优化事件分发逻辑

**详细文档**: 参见 [workflow-optimization/parallel-execution.md](workflow-optimization/parallel-execution.md)

---

## 第六部分: 性能优化案例

### 案例 1: 数据库查询优化 (N+1 问题)

**适用场景**:
- 工作流中需要查询多个相关数据
- 存在循环查询数据库的情况
- 执行时间随数据量线性增长

**问题特征**:
- 查询次数 = 1 + N (N 为数据条数)
- 数据库连接频繁建立和关闭
- 执行时间过长

**优化前状态**:

```python
# 查询用户列表
users = query("SELECT * FROM users LIMIT 100")

# 为每个用户查询订单 (N+1 问题)
for user in users:
    orders = query(f"SELECT * FROM orders WHERE user_id = {user.id}")
    user.orders = orders
```

- 查询次数: 101 次 (1 + 100)
- 执行时间: 10.5s
- 数据库负载: 高

**优化方案**:

```python
# 一次性查询所有数据
users = query("SELECT * FROM users LIMIT 100")
user_ids = [user.id for user in users]

# 批量查询订单
orders = query(f"SELECT * FROM orders WHERE user_id IN ({','.join(map(str, user_ids))})")

# 在内存中关联数据
orders_by_user = {}
for order in orders:
    if order.user_id not in orders_by_user:
        orders_by_user[order.user_id] = []
    orders_by_user[order.user_id].append(order)

for user in users:
    user.orders = orders_by_user.get(user.id, [])
```

**优化后效果**:
- 查询次数: 2 次 (减少 98%)
- 执行时间: 2.1s (减少 80%)
- 数据库负载: 低

**预期收益**:
- 短期: 执行时间减少 80%,数据库负载降低
- 长期: 支持更大数据规模,系统可扩展性提升
- ROI: 开发成本 2 小时,每月节省服务器成本 30%

---

### 案例 2: 大规模节点渲染优化 (100+ 节点)

**适用场景**:
- 工作流包含 100+ 个节点
- 前端渲染卡顿
- 编辑器响应缓慢

**问题特征**:
- 页面加载时间 > 5s
- 拖拽节点延迟明显
- 浏览器内存占用高

**优化前状态**:
- 节点数量: 150 个
- 页面加载时间: 8.5s
- 内存占用: 500MB
- 用户体验: 卡顿严重

**优化方案**:

1. **虚拟滚动**: 只渲染可见区域的节点
2. **节点懒加载**: 按需加载节点详情
3. **Canvas 优化**: 使用 Canvas 替代 DOM 渲染
4. **状态管理优化**: 减少不必要的重渲染

**优化后效果**:
- 页面加载时间: 2.1s (减少 75%)
- 内存占用: 150MB (减少 70%)
- 用户体验: 流畅

**预期收益**:
- 短期: 用户体验显著提升
- 长期: 支持更复杂的工作流设计
- ROI: 开发成本 1 周,用户满意度提升 40%

---

### 案例 3: 工作流日志删除性能优化

**适用场景**:
- 需要定期清理历史日志
- 日志数据量大 (百万级)
- 删除操作耗时长

**问题特征**:
- 删除操作阻塞数据库
- 影响正常业务
- 执行时间不可预测

**优化前状态**:
- 日志数量: 500 万条
- 删除时间: 45 分钟
- 数据库锁: 长时间锁表
- 业务影响: 严重

**优化方案**:

```python
# 优化前: 一次性删除
DELETE FROM workflow_logs WHERE created_at < '2024-01-01';

# 优化后: 分批删除
batch_size = 10000
while True:
    deleted = DELETE FROM workflow_logs
              WHERE created_at < '2024-01-01'
              LIMIT batch_size;

    if deleted < batch_size:
        break

    # 短暂休眠,释放数据库锁
    sleep(0.1)
```

**优化后效果**:
- 删除时间: 50 分钟 (略有增加,但不阻塞业务)
- 数据库锁: 短时间锁 (0.1s)
- 业务影响: 无

**预期收益**:
- 短期: 业务不受影响
- 长期: 数据库稳定性提升
- ROI: 开发成本 4 小时,避免业务中断损失

---

### 案例 4: TiDB 分布式存储集成

**适用场景**:
- 知识库数据量大 (TB 级)
- 单机 PostgreSQL 性能瓶颈
- 需要水平扩展能力

**问题特征**:
- 查询响应时间 > 5s
- 数据库 CPU 使用率 > 90%
- 无法继续扩展

**优化前状态**:
- 数据库: PostgreSQL 单机
- 数据量: 2TB
- 查询响应时间: 8.5s
- 扩展能力: 受限

**优化方案**:

1. **迁移到 TiDB**: 分布式 SQL 数据库
2. **向量索引优化**: 使用 TiDB Vector 加速检索
3. **读写分离**: 读请求分发到多个副本
4. **分区表**: 按时间分区提升查询效率

**优化后效果**:
- 查询响应时间: 1.2s (减少 86%)
- 数据库 CPU: 40% (降低 50%)
- 扩展能力: 支持 10x 数据规模

**预期收益**:
- 短期: 查询性能显著提升
- 长期: 支持业务快速增长
- ROI: 迁移成本 2 周,支持 10x 业务增长

---

### 案例 5: Higress AI Gateway 高可用部署

**适用场景**:
- 生产环境需要高可用
- 多 LLM 模型负载均衡
- 需要故障转移能力

**问题特征**:
- 单点故障风险
- LLM API 调用不稳定
- 无法应对流量突增

**优化前状态**:
- 架构: 单实例 Dify
- 可用性: 95%
- 故障恢复时间: 10 分钟
- 流量峰值: 无法应对

**优化方案**:

```yaml
# Higress AI Gateway 配置
apiVersion: networking.higress.io/v1
kind: McpBridge
metadata:
  name: dify-gateway
spec:
  replicas: 3  # 3 个实例
  loadBalancer:
    algorithm: round-robin
  healthCheck:
    enabled: true
    interval: 10s
  failover:
    enabled: true
    maxRetries: 3
```

**架构**:

```
用户请求 → Higress Gateway → [Dify 实例 1, Dify 实例 2, Dify 实例 3]
                ↓
          负载均衡 + 故障转移
```

**优化后效果**:
- 可用性: 99.9%
- 故障恢复时间: < 1 秒 (自动切换)
- 流量峰值: 支持 10x 流量

**预期收益**:
- 短期: 系统稳定性显著提升
- 长期: 支持业务关键应用
- ROI: 部署成本 3 天,避免业务中断损失

---

## 第七部分: 性能测试和监控

### 7.1 性能指标体系

**工作流执行指标**:

| 指标 | 目标值 | 说明 |
|-----|-------|------|
| 平均执行时间 | < 2s | 工作流完整执行时间 |
| P95 执行时间 | < 5s | 95% 请求的执行时间 |
| P99 执行时间 | < 10s | 99% 请求的执行时间 |
| 节点成功率 | > 99% | 节点执行成功的比例 |
| API 调用成功率 | > 99.5% | 外部 API 调用成功率 |
| 并发处理能力 | > 100 QPS | 每秒处理请求数 |

**资源使用指标**:

| 指标 | 目标值 | 说明 |
|-----|-------|------|
| CPU 使用率 | < 70% | 平均 CPU 使用率 |
| 内存使用率 | < 80% | 平均内存使用率 |
| 数据库连接数 | < 80% | 连接池使用率 |
| Redis 内存 | < 70% | Redis 内存使用率 |

**成本指标**:

| 指标 | 目标值 | 说明 |
|-----|-------|------|
| Token 使用成本 | < 预算 | LLM API 成本 |
| 基础设施成本 | < 预算 | 服务器、数据库成本 |
| 成本/用户 | 持续降低 | 单用户成本 |

### 7.2 监控工具

**LLMOps 监控**:

```python
# Dify 内置监控
from dify import Monitor

monitor = Monitor()

# 记录工作流执行
monitor.log_workflow_execution(
    workflow_id="xxx",
    execution_time=2.5,
    node_count=10,
    token_usage=1500,
    cost=0.003
)

# 查询统计数据
stats = monitor.get_workflow_stats(
    workflow_id="xxx",
    time_range="7d"
)
```

**执行追踪**:

- 工作流执行历史
- 节点运行步数统计
- LLM 使用统计
- 错误日志和重试记录

**资源监控**:

```bash
# Prometheus + Grafana
# 监控 CPU、内存、网络、磁盘

# 示例查询
rate(dify_workflow_execution_total[5m])  # 工作流执行速率
histogram_quantile(0.95, dify_workflow_duration_seconds)  # P95 执行时间
```

### 7.3 性能测试方法

**负载测试**:

```python
# 使用 Locust 进行负载测试
from locust import HttpUser, task, between

class DifyUser(HttpUser):
    wait_time = between(1, 3)

    @task
    def run_workflow(self):
        self.client.post(
            "/v1/workflows/run",
            headers={"Authorization": f"Bearer {self.api_key}"},
            json={"inputs": {"query": "测试问题"}}
        )

# 运行测试
# locust -f load_test.py --users 100 --spawn-rate 10
```

**压力测试**:

```bash
# 使用 Apache Bench
ab -n 1000 -c 50 -H "Authorization: Bearer xxx" \
   -p request.json \
   https://api.dify.ai/v1/workflows/run
```

**基准测试**:

```python
# 性能基准测试
import time

def benchmark_workflow(workflow_id, iterations=100):
    times = []
    for i in range(iterations):
        start = time.time()
        run_workflow(workflow_id)
        end = time.time()
        times.append(end - start)

    return {
        "avg": sum(times) / len(times),
        "p50": sorted(times)[len(times) // 2],
        "p95": sorted(times)[int(len(times) * 0.95)],
        "p99": sorted(times)[int(len(times) * 0.99)]
    }
```

### 7.4 性能分析工具

**Python Profiler**:

```python
import cProfile
import pstats

# 性能分析
profiler = cProfile.Profile()
profiler.enable()

# 执行工作流
run_workflow(workflow_id)

profiler.disable()

# 输出报告
stats = pstats.Stats(profiler)
stats.sort_stats('cumulative')
stats.print_stats(20)  # 显示前 20 个最耗时的函数
```

**数据库查询分析**:

```sql
-- PostgreSQL 慢查询日志
SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 20;

-- 查询执行计划
EXPLAIN ANALYZE
SELECT * FROM workflow_logs WHERE created_at > '2024-01-01';
```

---

## 参考资料

### 详细文档

- [workflow-optimization/graph-structure.md](workflow-optimization/graph-structure.md) - 图结构优化详解
- [workflow-optimization/parallel-execution.md](workflow-optimization/parallel-execution.md) - 并行执行和 Worker 池
- [workflow-optimization/variable-pool.md](workflow-optimization/variable-pool.md) - 变量池优化
- [llm-optimization/model-selection.md](llm-optimization/model-selection.md) - 模型选择策略
- [llm-optimization/prompt-engineering.md](llm-optimization/prompt-engineering.md) - Prompt 优化技巧
- [llm-optimization/caching.md](llm-optimization/caching.md) - 缓存策略实现
- [llm-optimization/structured-output.md](llm-optimization/structured-output.md) - 结构化输出
- [plugin-optimization/](plugin-optimization/) - 插件性能优化
- [monitoring.md](monitoring.md) - 监控和分析完整指南

### 外部资源

- [Dify 官方文档 - 性能优化](https://docs.dify.ai/guides/workflow/performance)
- [Dify 并行分支功能](https://dify.ai/blog/accelerating-workflow-processing-with-parallel-branch)
- [TiDB Vector 集成](https://dify.ai/blog/dify-x-tidb-supercharge-your-knowledge-pipeline-with-distributed-vector-storage)
- [Higress AI Gateway](https://www.alibabacloud.com/blog/602527)
- [阿里云 ACK 高可用部署](https://www.alibabacloud.com/blog/601874)

---

## 总结

性能优化是一个持续的过程,需要:

1. **定期诊断**: 使用快速诊断清单定位问题
2. **量化分析**: 建立性能指标体系,持续监控
3. **渐进优化**: 从影响最大的问题开始优化
4. **验证效果**: 通过 A/B 测试验证优化效果
5. **持续改进**: 根据业务增长调整优化策略

**关键收益**:

- 🚀 执行时间减少 40-60% (并行分支)
- 💰 成本降低 30-50% (LLM 缓存)
- 📈 吞吐量提升 2-3x (Worker 池优化)
- 🎯 可用性提升到 99.9% (高可用部署)

---

**版本**: v1.0.0
**最后更新**: 2026-03-04
**维护者**: Dify SKILL Team - Performance Expert

