envoy header x-envoy-upstream-rq-timeout-ms可以直接在curl中使用吗?

问题描述 投票:0回答:1

我测试了在 istio 安装的 pod 之间发送带有

x-envoy-upstream-rq-timeout-ms
标头的 http 请求。 特使代理

我预计请求会因为非常小的超时毫秒(1 毫秒)而失败。它比响应头中的实际上游服务时间短。

x-envoy-upstream-service-time: 5

root@nginx:/# curl -v -H "x-envoy-upstream-rq-timeout-ms: 1" 'http://http-echo-svc.circuit-breaker/200'
*   Trying 172.20.236.72:80...
* Connected to http-echo-svc.circuit-breaker (172.20.236.72) port 80 (#0)
> GET /200 HTTP/1.1
> Host: http-echo-svc.circuit-breaker
> User-Agent: curl/7.74.0
> Accept: */*
> x-envoy-upstream-rq-timeout-ms: 1
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< content-length: 0
< date: Mon, 07 Aug 2023 07:21:48 GMT
< x-envoy-upstream-service-time: 5
< server: envoy
<
* Connection #0 to host http-echo-svc.circuit-breaker left intact

如您所见,请求没有超时。我的测试有问题吗?

istio envoyproxy
1个回答
0
投票

标头“x-envoy-upstream-rq-timeout-ms”肯定会起作用。会出现网关超时错误。

请确保虚拟服务中的超时值没有设置为“0”,如下所示。这将禁用超时。更多详细信息请参阅envoy 文档

http:
  - route:
    - destination:
        host: reviews        
    timeout: 0

看起来卷曲请求是从 Pod 内部发出的。来自 Pod 内部的卷曲请求没有 header 效果。

当从外部 Pod 使用“x-envoy-upstream-rq-timeout-ms”发出卷曲请求时,您应该看到以下卷曲请求的输出。

< HTTP/1.1 504 Gateway Timeout
< content-length: 0
< date: Mon, 07 Aug 2023 07:21:48 GMT
< x-envoy-upstream-service-time: 5
< server: istio-envoy
© www.soinside.com 2019 - 2024. All rights reserved.