AWS ECS 中的 Fargate 网络服务器在空闲期后响应时间很长(但有时没有)

Posted

技术标签:

【中文标题】AWS ECS 中的 Fargate 网络服务器在空闲期后响应时间很长(但有时没有)【英文标题】:Fargate webserver in AWS ECS has long response time after idle period (but sometimes not) 【发布时间】:2021-12-11 07:20:46 【问题描述】:

我在 docker 中打包了一个 R Shiny 应用程序,并将其部署到一个 Fargate 实例上的 AWS ECS,该实例具有一个应用程序负载均衡器,其侦听器持有 SSL 证书。我可以看到该任务正在运行并且运行良好,但是当我在一段时间后转到 URL 时,加载需要整整 30 秒(同样,这不是来自实例启动/配置时间,因为它已经启动并且健康)。然后我可以打开一个新浏览器并转到相同的链接,它会立即加载。这可能是什么原因造成的?老实说,我什至不确定要搜索什么。

注意:当我在本地运行容器时,应用程序确实需要几秒钟才能启动,但这只是在容器最初启动时。无论空闲时间如何,它都会在初始启动时间之后运行得非常快。因此,我不认为它是闪亮的服务器。我上面提到的实例已经在运行,我希望它们会相应地运行。

我了解到负载平衡器空闲超时,但在结束连接后是否需要 30 秒才能重新连接?对于网络应用程序的内部运作,我不是很有经验,但似乎不太可能。同时,似乎增加空闲超时确实有帮助,但行为有点不稳定,因此可能只是确认偏差。

如果需要,我可以提供有关配置的更多详细信息。我只是希望有人知道我应该分享哪些细节,而不是分享我的整个 Terraform 目录。

【问题讨论】:

"然后我可以打开一个新的浏览器并转到相同的链接,它会立即加载。"如果您也在新浏览器中等待空闲时间,您是否观察到相同的加载时间?它可能与目标组的粘性设置有关。您对目标群体的粘性有什么设置(TG > 属性)?有关粘性的更多信息here。 @st_rt_dl_8 是的,在同一个浏览器中加载也需要很长时间。设置为:“Stickiness=Disabled”、“Deregistration delay=300 seconds”、“Slow start duration=0 seconds”、“Load balance algorithm=Round robin”。想法?谢谢你的资源!我现在也会调查一下 【参考方案1】:

我最终通过注意到我的两个关联子网中只有一个是公共的来解决这个问题。如果您有公共负载均衡器,则需要同时将两个关联的子网都设为公共(如果私有,则为私有......)

【讨论】:

以上是关于AWS ECS 中的 Fargate 网络服务器在空闲期后响应时间很长(但有时没有)的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS Fargate 和端口映射

AWS 使用 Fargate 对 ECS 服务的多个端口进行负载平衡

AWS ECS Fargate - 任务未运行

AWS ECS Fargate 模式 - 自动扩展

AWS CDK 并在现有 ALB 上创建 ECS/Fargate 服务。使用现有的监听器?

AWS ECS Fargate 不带负载均衡器用于内部服务