我们的网络服务器在 nginx + uwsgi 后面运行 Python 应用程序。
有时,我们会出现短暂的峰值(平均 2-5 倍无请求),如果没有可用的工作人员来处理这些请求,则会导致某些请求得到 502。
nginx 或 uwsgi 有没有办法将这些请求排队并在工作人员可用时为它们提供服务?
响应时间稍微增加一点总比出现错误要好 ;-)
答案1
Nginx 没有办法做到这一点. 指令队列作为 Nginx 的一部分提供仅限商业订阅。https://nginx.ru/en/docs/http/ngx_http_upstream_module.html#queue
一个好的决定是使用 nginx 运行多个(2 个或更多)uwsgi 后端uwsgi_next_upstream指示https://nginx.ru/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_next_upstream。
您也可以尝试error_page 502 =307 http://backup.example.com/;