【发布时间】:2022-08-18 18:47:31
【问题描述】:
我们正在使用 Django 应用程序 (https://github.com/saleor/saleor) 来处理我们的电子商务用例。我们在生产中使用 ASGI 和 Uvicorn,有 4 名工人。基础设施设置 -
- 4 个 4 核 16 GB 机器实例,用于托管 Django 应用程序 (Saleor)。
- 在所有实例上使用 docker 部署应用程序。
- 2 个 4 核 16 GB 的 Celery 实例。
- 具有一个主副本和一个副本的托管 PostgresQL 解决方案。
Saleor 使用 Django 和 Graphene 来实现 GraphQL API。 API 之一是 createCheckout,它需要大约 150 毫秒到 250 毫秒,具体取决于有效负载实体。在使用 1 个用户运行负载测试时,API 始终提供类似的延迟。当并发用户数增加到 10 时,延迟增加到 4 倍(1 秒 - 1.3 秒)。对于 20 个用户,它达到了 10 多秒。
平均 CPU 使用率不超过 60%。在跟踪延迟时,我们发现即使有 20 个用户发出并发请求,核心 API 的耗时也不超过 150-250 毫秒。这意味着所有延迟都被添加到 ASGI + Uvicorn 层。
不知道我们在这里错过了什么。从部署的角度来看,我们遵循标准的 Django + ASGI + Uvicorn 设置进行生产。任何有关这方面的帮助或建议将不胜感激。
标签: django uvicorn asgi saleor