高并发下,工作流(agent节点)调用变得极其缓慢,甚至失败

  1. 本地的 Docker 部署方法。修改了 .env 文件后,并发性无法得到提升。存在高延迟问题,甚至还会出现故障。

  2. 当发送 10 个并发请求时,代理工作流程的延迟非常缓慢,完成响应的时间长达 60 秒.

  3. 当同时进行 20 次并发传输时,延迟可能会高达 120 秒,甚至可能会直接显示为故障或 CPU 超载。多次修改 .env 文件中的并发参数设置,但仍未改善这一状况。

  4. 错误信息:1.req_id: 7da9f30f18 PluginInvokeError: {“args”:{},“error_type”:“Exception”,“message”:“read llm model failed: request failed: req_id: 3f9f69835f PluginInvokeError: {“args”:{“description”:”[models] Error: API request failed with status code 503: {\“error\”:{\“message\”:\“system cpu overloaded (current: 99.3%, threshold: 90%)\”,\“type\”:\“new_api_error\”,\“param\”:\“\”,\“code\”:\“system_cpu_overloaded\”}}“},“error_type”:“InvokeError”,“message”:”[models] Error: API request failed with status code 503: {\“error\”:{\“message\”:\“system cpu overloaded (current: 99.3%, threshold: 90%)\”}}“} 90%)\”,\“type\”:\“new_api_error\”,\“param\”:\“\”,\“code\”:\“system_cpu_overloaded\”}}“}”}

    2.Failed to transform agent message: req_id: 86c43ca377 PluginInvokeError: {“args”:{},“error_type”:“Exception”,“message”:“invoke llm model failed: request failed with status code: 400 and respond with: {“code”:“invalid_param”,“message”:“tenant not found”,“status”:400}\n”}

  5. ===============================================================
    这是我的.env 文件参数
    SERVER_WORKER_CLASS=gevent(我还尝试将它切换到sync模式,但还是没有效果。)
    SERVER_WORKER_CONNECTIONS=20
    CELERY_WORKER_CLASS=(我还尝试将它切换到sync模式,但还是没有效果。)
    GUNICORN_TIMEOUT=360
    CELERY_WORKER_AMOUNT=8
    CELERY_AUTO_SCALE=true
    CELERY_MAX_WORKERS=8
    CELERY_MIN_WORKERS=2
    API_TOOL_DEFAULT_CONNECT_TIMEOUT=10
    API_TOOL_DEFAULT_READ_TIMEOUT=60
    SQLALCHEMY_POOL_SIZE=300
    SQLALCHEMY_MAX_OVERFLOW=10
    SQLALCHEMY_POOL_RECYCLE=3600
    SQLALCHEMY_ECHO=false
    SQLALCHEMY_POOL_PRE_PING=false
    SQLALCHEMY_POOL_USE_LIFO=false
    SQLALCHEMY_POOL_TIMEOUT=60
    SQLALCHEMY_POOL_SIZE=250
    POSTGRES_SHARED_BUFFERS=2GB
    POSTGRES_WORK_MEM=32MB
    POSTGRES_MAINTENANCE_WORK_MEM=1GB
    POSTGRES_EFFECTIVE_CACHE_SIZE=24GB
    POSTGRES_STATEMENT_TIMEOUT=0
    POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT=0
    MYSQL_MAX_CONNECTIONS=1000
    MYSQL_INNODB_BUFFER_POOL_SIZE=512M
    MYSQL_INNODB_LOG_FILE_SIZE=128M
    MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT=2

dify版本是1.13.2,使用的是8CPU 32G的服务器。目前只能承受10个并发,而且延时已经从单一调用的7-10s飙升到平均45s,不可用状态