Nginx Uvicorn未随机处理某些请求

Nginx Uvicorn未随机处理某些请求,nginx,python-asyncio,gunicorn,fastapi,uvicorn,Nginx,Python Asyncio,Gunicorn,Fastapi,Uvicorn,我们正在运行一个Fastapi+Uvicorn web应用程序,使用gunicorn作为流程管理器,使用Nginx作为反向代理服务器。对于大多数i/o操作(DB调用、RESTAPI),应用程序都以异步模式运行。整个安装程序在Ubuntu 16.04的Docker容器中运行 安装程序在大多数情况下工作,但有时根本不处理请求&它在Nginx端超时。我们还尝试将Nginx从设置中删除,并观察到很少有请求在经过很长时间(如15分钟)后得到处理。这是非常随机的,但通常在一小时内发生2-3次 下面是我们正在

我们正在运行一个Fastapi+Uvicorn web应用程序,使用gunicorn作为流程管理器,使用Nginx作为反向代理服务器。对于大多数i/o操作(DB调用、RESTAPI),应用程序都以异步模式运行。整个安装程序在Ubuntu 16.04的Docker容器中运行

安装程序在大多数情况下工作,但有时根本不处理请求&它在Nginx端超时。我们还尝试将Nginx从设置中删除,并观察到很少有请求在经过很长时间(如15分钟)后得到处理。这是非常随机的,但通常在一小时内发生2-3次

下面是我们正在使用的gunicorn配置——

host = os.getenv("HOST", "0.0.0.0")
port = os.getenv("PORT", "80")

# Gunicorn config variables
workers = web_concurrency
bind = f"{host}:{port}"
keepalive = 2

timeout = 60  
graceful_timeout = 30
threads = 2
worker_tmp_dir = "/dev/shm"
# Logging mechanism
capture_output = True
loglevel = os.getenv("LOG_LEVEL", "debug") 
使用命令
exec gunicorn-k uvicorn.workers.UvicornWorker-c“$gunicorn\u CONF”“$APP\u MODULE”调用gunicorn

我们已经尝试了一些配置更改,如——

  • 更改工作进程数,工作进程超时
  • 将流程管理器从gunicorn更改为supervisord
  • 将CPU密集型任务卸载到芹菜上,而不是线程化
  • 将uvicorn应用程序绑定到unix套接字而不是代理服务器

  • 我有完全相同的问题,你确定了根本原因吗?我也看到了类似的问题。在这里开了一张票: