我是 kubernetes 的新手,我无法跟踪我在 Jmeter 负载测试中观察到的响应时间的指数退避信号。我有一个 kubernetes 服务,它在 4-32 个 pod 之间运行,具有水平 pod 自动缩放功能。每个 pod 都运行一个 Gunicorn WSGI,为 django 后端提供服务。所有不同的 k8s 服务都在 nginx 反向代理之后,它将传入的流量直接重定向到服务的 VIP。Nginx 位于暴露于最终用户网络流量的 Amazon ELB 后面。ELB 最终会在 60 秒后超时请求。
每个 gunicorn 服务器运行一个带有 3 个 greenlets 的 worker,并且积压限制为 1。因此它在任何给定时间只能处理 4 个请求,并且对于 nginx 尝试发送的任何额外请求立即返回错误响应。我猜想这些错误请求随后会被捕获并使用指数退避重试,但我无法确定这是在哪里发生的。
据我所知,nginx 不能成为指数重试的来源,因为它只为请求提供一个上游端点。而且我在文档中找不到任何讨论在 kubernetes 路由的任何阶段对错误响应进行指数定时重试的内容。k8s 集群在 1.9 版本上运行。