Skip to main content

显示 Helm Chart 值

1. 调整基础资源

你可以通过调整 Helm Chart 中各服务的副本数和资源配置提升 Dify 的整体吞吐。实际配置应结合业务负载、集群资源、数据库连接上限和队列积压情况逐步调整。 基础配置示例:

2. 按队列拆分 Worker

3.9.x 的 Helm Chart 支持通过 additionalWorkers 将原本由默认 worker 处理的 Celery 队列拆分到独立 Deployment。这样可以对不同类型任务独立设置副本数、CPU、内存和调度策略。 默认 worker 是兜底 worker,会消费所有队列。启用 additionalWorkers 后有两种常见方式:
  • 保守模式:保留 worker.enabled: true,只额外启用热点队列的专用 worker。适合初次调优,默认 worker 继续兜底消费未拆分队列。
  • 完全拆分模式:设置 worker.enabled: false,并确保所有实际使用的队列都有对应的 additionalWorkers 消费。否则相关后台任务会积压。
常见拆分如下:
如果关闭默认 worker,请确认数据集、工作流、通用后台任务和触发器队列都已有对应 worker 消费。只开启部分 additionalWorkers 后直接关闭默认 worker,可能导致未覆盖队列无人消费。
保守模式示例:
完全拆分模式示例:
调优建议:
  • 并发任务多、队列积压明显时,优先增加对应 worker 的 replicas
  • 单个任务本身很重、Pod 内存持续接近 limit 或出现 OOMKilled 时,提高对应 worker 的 memory limit。
  • 不建议盲目增大 celeryWorkerAmount。它会增加单 Pod 并发,也会增加数据库连接、Redis 连接和内存压力。
  • workerBeat 只负责定时任务调度,应保持 1 副本。

3. 优化外部 Postgres 数据库性能

3.1 计算数据库最大连接数

在配置数据库时,需要根据 API 和所有 worker 的连接池上限估算所需的最大连接数:
示例:
  • API: replicas=2, serverWorkerAmount=1
  • 默认 Worker: replicas=4, celeryWorkerAmount=1
  • SQLALCHEMY_POOL_SIZE=100
  • SQLALCHEMY_MAX_OVERFLOW=150
则最大连接数为:
建议在计算结果基础上预留 20-30% 的余量,以应对突发流量。上述示例中,建议将 max_connections 设置为 1800-2000 或更高,并结合数据库实例规格确认可承载。

4. 性能监控建议