问题描述
我在 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后端的超时时间。