跳转到主要内容

显示 Helm Chart 值

helm show values dify/dify

1. 提高资源分配

  • 你可以通过调整 Helm Chart 中各服务的资源分配来提升 Dify 的性能。
  • 可根据你的部署环境和资源情况进行扩容。
  • 以下是各组件的推荐配置:
分类组件ReplicasRequest CPURequest MemLimit CPULimit Mem备注
核心应用组件API611 GB12 GB
Worker244 GB48 GB
Worker Beat112 GB24 GB
Web10.51 GB12 GB
Sandbox122 GB24 GB
企业版组件Enterprise122 GB22 GB
Enterprise_Audit112 GB24 GB
Enterprise_Frontend112 GB12 GB
插件组件Plugin Daemon112 GB24 GB
Plugin Controller10.51 GB12 GB
Plugin Connector112 GB12 GB
Plugin Manager112 GB24 GB
基础组件SSRF Proxy10.50.5 GB11 GB
Gateway112 GB24 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