我们在 GKE 上使用暴露在 TCP 负载均衡器下的面向公众的 Nginx 入口控制器运行,该负载均衡器由 Kubernetes 自动配置。
问题是我们的请求中有 0.05% 的状态码是 499(Nginx 唯一的状态码,表示客户端已取消)。我们的 P99 延迟平均始终低于 100 毫秒。
我们在 GKE 上使用暴露在 TCP 负载均衡器下的面向公众的 Nginx 入口控制器运行,该负载均衡器由 Kubernetes 自动配置。
问题是我们的请求中有 0.05% 的状态码是 499(Nginx 唯一的状态码,表示客户端已取消)。我们的 P99 延迟平均始终低于 100 毫秒。
我的问题通过在配置映射中添加以下内容得到解决。
apiVersion: v1
kind: ConfigMap
data:
http-snippet: |
proxy_ignore_client_abort on;
请参阅http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_client_abort
开启此功能后,我的 499 错误几乎为零!
如果您遇到相同的问题,我强烈建议您尝试此配置。
此错误代码 499 与客户端浏览器在从后端发送响应之前关闭连接有关。