显示 Helm Chart 值
helm show values dify/dify
1. 提高资源分配
- 你可以通过调整 Helm Chart 中各服务的资源分配来提升 Dify 的性能。
- 可根据你的部署环境和资源情况进行扩容。
- 以下是各组件的推荐配置:
| 分类 | 组件 | Replicas | Request CPU | Request Mem | Limit CPU | Limit Mem | 备注 |
|---|
| 核心应用组件 | API | 6 | 1 | 1 GB | 1 | 2 GB | ① |
| Worker | 2 | 4 | 4 GB | 4 | 8 GB | ② |
| Worker Beat | 1 | 1 | 2 GB | 2 | 4 GB | |
| Web | 1 | 0.5 | 1 GB | 1 | 2 GB | |
| Sandbox | 1 | 2 | 2 GB | 2 | 4 GB | ③ |
| 企业版组件 | Enterprise | 1 | 2 | 2 GB | 2 | 2 GB | |
| Enterprise_Audit | 1 | 1 | 2 GB | 2 | 4 GB | |
| Enterprise_Frontend | 1 | 1 | 2 GB | 1 | 2 GB | |
| 插件组件 | Plugin Daemon | 1 | 1 | 2 GB | 2 | 4 GB | |
| Plugin Controller | 1 | 0.5 | 1 GB | 1 | 2 GB | |
| Plugin Connector | 1 | 1 | 2 GB | 1 | 2 GB | |
| Plugin Manager | 1 | 1 | 2 GB | 2 | 4 GB | |
| 基础组件 | SSRF Proxy | 1 | 0.5 | 0.5 GB | 1 | 1 GB | |
| Gateway | 1 | 1 | 2 GB | 2 | 4 GB | |
| Unstructured | - | - | - | - | - | 按需调整 |
| MinIO | - | - | - | - | - | 按需调整 |
备注说明:
- ① API:根据需要横向扩容replica
- ② Worker:根据需要横向扩容replica(tag 侧是否有大量文件需要上传)
- ③ Sandbox:根据需要横向扩容replica(是否节点有大量计算任务)
maxWorkers: 4(工作进程数量)
workerTimeout: 15(调用超时时间)
配置示例:
api:
replicas: 6
resources:
requests:
cpu: 1
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
worker:
replicas: 2
resources:
requests:
cpu: 4
memory: 4Gi
limits:
cpu: 4
memory: 8Gi
sandbox:
replicas: 1
maxWorkers: 4
workerTimeout: 15
resources:
requests:
cpu: 2
memory: 2Gi
limits:
cpu: 2
memory: 4Gi
2. 优化外部 Postgres 数据库性能
2.1 计算数据库最大连接数
在配置数据库时,需要根据以下公式计算所需的最大连接数:
数据库最大连接数 = (SQLALCHEMY_POOL_SIZE + SQLALCHEMY_MAX_OVERFLOW) × API Worker数 × API Replicas数量
+ (SQLALCHEMY_POOL_SIZE + SQLALCHEMY_MAX_OVERFLOW) × Worker Worker数 × Worker Replicas数量
参数说明:
SQLALCHEMY_POOL_SIZE: 每个 worker 的数据库连接池大小
SQLALCHEMY_MAX_OVERFLOW: 连接池溢出时的最大额外连接数
API Worker数: API 服务的 serverWorkerAmount
Worker Worker数: Worker 服务的 celeryWorkerAmount
计算示例:
假设配置如下:
- API: replicas=6, serverWorkerAmount=1
- Worker: replicas=2, celeryWorkerAmount=1
- SQLALCHEMY_POOL_SIZE=100
- SQLALCHEMY_MAX_OVERFLOW=150
则最大连接数为:
(100 + 150) × 1 × 6 + (100 + 150) × 1 × 2 = 1500 + 500 = 2000
建议在计算结果基础上预留 20-30% 的余量,以应对突发流量。上述示例中,建议将 max_connections 设置为 2400-2600。
2.2 完整配置示例
api:
replicas: 6
serverWorkerAmount: 1
extraEnv:
- name: SQLALCHEMY_POOL_SIZE
value: "100"
- name: SQLALCHEMY_MAX_OVERFLOW
value: "150"
resources:
requests:
cpu: 1
memory: 1Gi
limits:
cpu: 1
memory: 2Gi
3. 性能监控建议
3.1 关键指标
监控以下指标以确保系统运行良好:
数据库连接:
资源使用:
- CPU 使用率(建议保持在 70% 以下)
- 内存使用率(建议保持在 80% 以下)
- 磁盘 I/O
应用性能:
- API 响应时间
- Worker 任务队列长度
- 任务执行时间
3.2 常见性能瓶颈
| 症状 | 可能原因 | 解决方案 |
|---|
| API 响应慢 | API replicas 不足 | 增加 API replicas |
| 任务堆积 | Worker 处理能力不足 | 增加 Worker replicas 或 celeryWorkerAmount |
| 数据库连接耗尽 | 连接数配置不足 | 增加 max_connections 或优化连接池配置 |
| 内存溢出 | 内存限制过低 | 增加 memory limits |
| CPU 节流 | CPU 限制过低 | 增加 CPU limits |