【问题标题】:AWS App Mesh request timeout for file stream which takes longer than 30 seconds文件流的 AWS App Mesh 请求超时,时间超过 30 秒
【发布时间】:2022-11-02 20:26:22
【问题描述】:

我在 AWS 上的网络设置如下所示:
ECS Fargate 服务与 App Mesh、Envoy Proxy 和 ELB。

一切正常,除非(下载)请求的时间超过 30 秒。我们的一项服务会根据要求创建一个 zip 文件并将下载链接发送给用户。如果 zip 很小,则一切正常,用户可以成功下载。如果 zip 较大且下载时间超过 30 秒,则会失败。

该错误已被追踪到 App Mesh - 虚拟节点侦听器超时。
超时是默认设置(空/未设置)并且发生了 30 秒错误。
当请求超时设置为足够大的数字时,下载成功,但固定超时,如 600 秒,仍然有机会为非常大的文件产生相同的错误。
当请求超时设置为 0s(预计这将作为“无限”工作)时,更大的下载也成功了,但不确定这样做是否正确。

我的问题是:
具有 0 秒请求超时的 App 网格侦听器是一个很好的做法,否则它会产生我不知道的不同问题?
如果这是一种不好的做法,我该如何强制 App Mesh 在 30 秒后不杀死我的文件流?

文件下载的示例响应标头:

HTTP/2 200 OK
date: Wed, 05 Oct 2022 09:06:45 GMT
content-type: application/octet-stream
content-length: 17325639
content-disposition: attachment; filename="a08c94a3-068e-486f-92c7-371d00984ddc.zip"
expires: Wed, 05 Oct 2022 09:07:45 GMT
cache-control: private, max-age=60
last-modified: Wed, 05 Oct 2022 07:11:28 GMT
access-control-allow-headers: Cache-Control, X-CSRF-Token, X-Requested-With
access-control-allow-origin: *
server: envoy
x-envoy-upstream-service-time: 55
X-Firefox-Spdy: h2

以下标头由服务器设置,但可能由特使删除:

connection: keep-alive

【问题讨论】:

    标签: aws-app-mesh


    【解决方案1】:

    30 秒是默认超时,可以为侦听器定义更高的超时值。

    使用 120 秒作为侦听器超时的 VirtualNode 示例:

    apiVersion: appmesh.k8s.aws/v1beta2
    kind: VirtualNode
    metadata:
      name: myapp
      namespace: myns
    spec:
      podSelector:
        matchLabels:
          app: myapp
      listeners:
        - portMapping:
            port: 80
            protocol: http
          timeout:
            http:
              perRequest:
                value: 120
                unit: s
      backends:
        - virtualService:
            virtualServiceRef:
              name: myapp
      serviceDiscovery:
        dns:
          hostname: myapp.myns.svc.cluster.local
    

    【讨论】:

      猜你喜欢
      • 2021-08-25
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 2013-04-01
      • 2015-11-14
      相关资源
      最近更新 更多