我部署的应用程序是K8s下的FastAPI with Uvicorn。在尝试了解如何对应用程序进行 Docker 化时,我明白我想在没有 Gunicorn 的情况下实现 Uvicorn,并添加一个根据应用程序收到的请求负载进行扩展/缩减的系统。我做了很多负载测试,发现默认情况下有 1 个 Uvicorn 工作人员,我可以获得 3.5 RPS,而将工作人员更改为 8 个时,我可以轻松获得 22 RPS(没有检查更多,因为这对我来说效果很好) 。
现在,我对资源的期望是,我必须提供的 CPU 限制为 8(我假设每个工作人员在一个进程和线程上工作),但我只看到内存使用量增加,但大麦在CPU中。也许是因为应用程序不使用那么多的 CPU,但它确实有可能使用超过 1 个 CPU?到目前为止,它没有使用超过一个CPU。
Uvicorn 工人如何工作?我应该如何计算该应用程序需要多少工作人员?我没有找到任何有用的信息。