问题背景:使用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然后重新修改:

  1. 最大化利用 8 核 CPU:

    • SERVER_WORKER_AMOUNT: 8: 将 Gunicorn 工作进程数从 2 提升到 8,与您的 CPU 核心数匹配,实现真正的并行处理。
    • CELERY_WORKER_AMOUNT: 4CELERY_MAX_WORKERS: 8: 大幅增加后台任务的处理能力,确保文档解析、索引构建等耗时操作能快速完成。
    •   SERVER_WORKER_CONNECTIONS :200 最大连接数

  2. 增强数据库性能:

    • POSTGRES_WORK_MEM: 16MB: 为每个数据库操作分配更多内存,显著提升复杂查询和排序的性能。

    • SQLALCHEMY_POOL_SIZE: 200: 进一步扩大连接池,确保在高并发下数据库连接依然高效。

    • POSTGRES_MAX_CONNECTIONS=1000

  3. 并发数最大上限提升
    • WORKFLOW_PARALLEL_DEPTH_LIMIT=50 和 MAX_PARALLEL_LIMIT=50 工作流并行嵌套层数上限

    • WORKFLOW_MAX_EXECUTION_STEPS=800

  4. 文件上传限制

    • ​​​​​​​​​​​​

      # 知识库文件上传大小限制
      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)

  5. 其他

    • CODE_MAX_STRING_ARRAY_LENGTH:100

      GRAPH_ENGINE_MIN_WORKERS: 5

注:为避免每次更新都手动修改,可以直接写个更新脚本

以上修改的配置根据你实际的服务器性能定,比如我的cpu是8核。

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务

更多推荐