【发布时间】: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