最近,我遇到了 GCP 上的内部 http(s) 负载均衡器的问题,后端服务(实例组)超时。300 秒后,对 LB 的 API 调用将失败,并出现 408 HTTP 响应。
我在 GCP 上有一个内部 HTTPS 负载均衡器 (LB)。首先,我通过 LB 调用一个快速 API,它正常工作。然后我将后端服务的超时设置为 10 秒,然后调用慢速 API(例如,500 秒才能完成请求)。错误响应按预期在 10 秒后发生。但是当我将超时设置为 1000 秒并调用慢速 API 时,我仅在 300 秒后就收到了错误超时响应。我还将连接耗尽超时设置为 1000 秒,但它仍然不起作用。
我需要设置什么参数来允许 API 的回复时间超过 300 秒?谢谢。
答案1
根据后端服务超时对于 HTTP 流量,客户端完成发送请求的最长时间等于后端服务超时,我知道建议增加超时以避免 408 错误,我注意到您的慢速应用程序需要超过 300 秒才能完成 HTTP 请求,我更深入地研究了这种行为,并基于 GCLB 架构,您看到的 300 秒超时是提到的流空闲超时这里,请参阅下面的回顾:
“request_timeout”:->后端服务超时-->您已配置为 1000 秒,这确保 HTTP 请求应在此时间范围内完成,无论连接是否空闲且服务器是否发送缓慢响应。
“stream_idle_timeout”:HTTP 流的空闲时间不应超过此时间,即使服务器发送了 TCP keepalive 但没有 http 响应,如果 http 流空闲了 5 分钟,LB 就会关闭连接。目前不可配置,默认为 5 分钟。
idle_timeout:空闲超时定义为没有活动请求的时间段。该值为 10 分钟。
您看到的行为似乎与 stream_idle_timeout 有关,我建议您打开一个功能要求在 GCP 中,为了评估修改该值的可能性,建议共享所有细节和重现该行为的步骤。