了解 haproxy 入口控制器中的超时

问题描述

我在 GKE 集群中使用 HAProxy 作为入口控制器。
对于我想在 X 毫秒内超时的服务,这就是我的配置:

---
apiVersion: v1
kind: Service
Metadata:
  name: dummy-app-service
  annotations:
    haproxy.org/backend-config-snippet: |
      option http-keep-alive
      timeout server 40ms
      timeout client 20ms
      timeout http-keep-alive 20ms
      timeout http-request 40ms  
spec:
  ports:
  - name: app
    targetPort: 8080
    port: 8080
  selector:
    app: dummy-app

我想了解客户端和http-request超时有什么区别,哪个优先于另一个
如果我收到一个请求,它会在 20 毫秒(客户端超时)还是 40 毫秒(http-请求超时)内超时??

解决方法

最佳答案写在文档timeout http-request

随着HTTP请求超时,无论客户端速度如何 类型,如果请求没有及时完成,请求将被中止。当。。。的时候 超时到期,向客户端发送 HTTP 408 响应以通知它 关于问题,并且连接已关闭。

如果未设置此参数 (timeout http-request ... ),则客户端超时仍适用于传入请求的每个块之间。需要在前端设置才能生效,除非前端是TCP模式,在这种情况下会使用HTTP后端的超时时间。