Dify性能优化实践(卡顿、并发数低)
摘要:针对Dify性能瓶颈问题,本文提出通过优化docker-compose.yaml配置来提升系统资源利用率。首先建议检查机器资源使用情况(内存、磁盘、CPU),然后重点修改四个关键参数:调整SERVER_WORKER_AMOUNT为CPU核心数(如8核)、增加CELERY_WORKER_AMOUNT和CELERY_MAX_WORKERS提升后台任务处理能力、优化POSTGRES_WORK_ME
问题背景:使用dify时,遇到Dify性能瓶颈,但其实部署的机子性能很足,未被充分利用,此时可通过修改配置文件来优化,由于语法版本问题,可能有更多分配内存给dify的方法,这里省略,可自行研究。
Dify版本:1.11.1
系统: Linux
本质:env文件的优化
第一步
检查自己的机器是否已满载:
// 检查内存
free -h
// 检查磁盘
df -h
// 检查CPU
nproc 或 lscpu
第二步
打开dify/docker目录下的.env文件,用vscode打开然后ctrl+F搜索修改, 在后续版本更新后,会出现env文件不匹配报错的情况,这个是git拉取时没有更新env文件的缘故,可以重新cp .env.example .env然后重新修改:
-
最大化利用 8 核 CPU:
SERVER_WORKER_AMOUNT: 8: 将 Gunicorn 工作进程数从 2 提升到 8,与您的 CPU 核心数匹配,实现真正的并行处理。CELERY_WORKER_AMOUNT: 4和CELERY_MAX_WORKERS: 8: 大幅增加后台任务的处理能力,确保文档解析、索引构建等耗时操作能快速完成。-
SERVER_WORKER_CONNECTIONS :200 最大连接数
-
增强数据库性能:
-
POSTGRES_WORK_MEM: 16MB: 为每个数据库操作分配更多内存,显著提升复杂查询和排序的性能。 -
SQLALCHEMY_POOL_SIZE: 200: 进一步扩大连接池,确保在高并发下数据库连接依然高效。 -
POSTGRES_MAX_CONNECTIONS=1000
-
- 并发数最大上限提升
-
WORKFLOW_PARALLEL_DEPTH_LIMIT=50 和 MAX_PARALLEL_LIMIT=50 工作流并行嵌套层数上限
-
WORKFLOW_MAX_EXECUTION_STEPS=800
-
-
文件上传限制
-
# 知识库文件上传大小限制
UPLOAD_FILE_SIZE_LIMIT=1024
UPLOAD_FILE_BATCH_LIMIT=50
# 多模态 上传图片、视频、音频大小限制
UPLOAD_IMAGE_FILE_SIZE_LIMIT=1000
UPLOAD_VIDEO_FILE_SIZE_LIMIT=10000
UPLOAD_AUDIO_FILE_SIZE_LIMIT=50工作流的限制是WORKFLOW_FILE_UPLOAD_LIMIT=10
UPLOAD_FILE_BATCH_LIMIT 从 5 增加到 50
BATCH_UPLOAD_LIMIT 从 20 增加到 100
WORKFLOW_FILE_UPLOAD_LIMIT 从 10 增加到 50
NGINX_CLIENT_MAX_BODY_SIZE=15M 从15增加到500(如不改则网页会提示上传文件大小不能超过15M)
-
-
其他
-
CODE_MAX_STRING_ARRAY_LENGTH:100
GRAPH_ENGINE_MIN_WORKERS: 5
-
注:为避免每次更新都手动修改,可以直接写个更新脚本
以上修改的配置根据你实际的服务器性能定,比如我的cpu是8核。
更多推荐



所有评论(0)