Concurrency gunicorn uvicorn worker.py如何遵守限制\u并发设置
FastAPI使用gunicorn启动uvicorn workers,如中所述 但是,gunicorn不允许使用自定义设置启动uvicorn,如中所述 该问题建议覆盖源文件中的config_kwargs,如 我们尝试过,但在源中的多个uvicorn文件中,uvicorn不遵守设置Concurrency gunicorn uvicorn worker.py如何遵守限制\u并发设置,concurrency,gunicorn,fastapi,uvicorn,concurrency-limits,Concurrency,Gunicorn,Fastapi,Uvicorn,Concurrency Limits,FastAPI使用gunicorn启动uvicorn workers,如中所述 但是,gunicorn不允许使用自定义设置启动uvicorn,如中所述 该问题建议覆盖源文件中的config_kwargs,如 我们尝试过,但在源中的多个uvicorn文件中,uvicorn不遵守设置限制\u并发性: 如何强制乌维康遵守此设置?我们仍然收到来自FastAPI的503个错误 -------更新----------- gunicorn设置--worker connections 1000在发出分配给多
限制\u并发性
:
如何强制乌维康遵守此设置?我们仍然收到来自FastAPI的503个错误
-------更新-----------
gunicorn设置--worker connections 1000在发出分配给多个worker的100个并行请求时仍会导致503
然而,我认为这是一个更复杂的问题:我们的API端点需要做大量繁重的工作,通常需要5秒钟才能完成
2芯2人压力测试:
- A.100多个并发请求,端点负载沉重--工作连接1
- B.100多个并发请求,端点负载沉重--工作连接1000
- C.100多个并发请求,端点低负载--工作连接1
- D.100多个并发请求,端点低负载--工作连接1000
工作者连接
同时客户端的最大数目
来自
限制并发性
在发出HTTP 503响应之前,允许的最大并发连接数或任务数
根据此信息,两个设置变量执行相同的操作。所以
uvicorn --limit-concurrency 100 application:demo_app
现在将此CustomUvicornWorker
与gunicorn
命令一起使用
gunicorn -k path.to.custom_worker.CustomUvicornWorker application:demo_app
gunicorn-k path.to.custom\u worker.CustomUvicornWorker应用程序:演示\u应用程序
注意:您可以在
CustomUvicornWorker
类中检查self.config.limit\u并发性
,以确保正确设置值。谢谢!gunicorn——worker connections 1000没有任何影响,当我发出许多并行请求时,我仍然得到503。然而,我们的API端点需要很多繁重的工作负载,通常需要5秒钟才能完成。然而,我们必须做压力测试,看看如果100个客户同时提出这个要求会发生什么。我不知道为什么会发生这种情况,但是,你可以尝试三种解决方案。第一、第二以及第一和第二的组合。是的,我不确定503是否是由于并发连接或其他资源过载造成的。我还将尝试CustomUvicornWorker方法并对其进行测试
uvicorn --limit-concurrency 100 application:demo_app
gunicorn --worker-connections 100 -k uvicorn.workers.UvicornWorker application:demo_app
from uvicorn.workers import UvicornWorker
class CustomUvicornWorker(UvicornWorker):
CONFIG_KWARGS = {
"loop": "uvloop",
"http": "httptools",
"limit_concurrency": 100
}
gunicorn -k path.to.custom_worker.CustomUvicornWorker application:demo_app