显示 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 的
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=100SQLALCHEMY_MAX_OVERFLOW=150