CloudFront连接超时与响应超时机制疑问:为何未按预期触发?
CloudFront超时与重试机制解析
为什么没在30秒后触发超时?
你对CloudFront超时逻辑的理解有偏差:Origin Response Timeout(30秒)是单次请求尝试的响应超时阈值,而非整个请求链路的总超时时间。当CloudFront成功连接源站并发送请求后,如果在30秒内未收到源站的任何响应(哪怕源站仍在处理请求),它会断开当前连接并触发重试,直到用完配置的尝试次数,才会返回504错误。
你的源站处理请求需要65秒,远超30秒的单次响应超时限制,因此CloudFront会在每次等待30秒后发起重试,一共执行3次完整的请求尝试(对应你看到的3次应用日志记录)。每次30秒的等待时间叠加,再加上连接建立的少量耗时,最终导致浏览器在约180秒后收到504错误。
Connection Attempts是否仅针对连接阶段?
不是。这个配置的作用范围不止于TCP连接建立阶段:
- 当CloudFront无法与源站建立连接(如连接超时、连接失败),会按配置次数重试连接;
- 当连接成功但源站响应超时、或者返回5xx状态码时,CloudFront也会断开当前连接,重新发起新的请求尝试,这类重试同样计入
Connection Attempts的次数上限。
你的场景中,三次请求都是连接成功后触发的响应超时重试,因此这3次尝试全部被Connection Attempts=3的配置覆盖,用完次数后CloudFront终止请求并返回504。
内容的提问来源于stack exchange,提问作者Omiron
相关产品推荐
相关产品推荐

