AWS Lambda 无服务器应用程序 (docker) 明显慢于本地 docker

AWS Lambda serverless app (docker) markedly slower than local docker

提问人:metase 提问时间:11/16/2023 更新时间:11/17/2023 访问量:32

问:

我在 AWS Lambda 中托管一个无服务器 docker 应用程序,这是一个 .net 8(但是 6 和 7 甚至 beanstalk 的行为相同)。该应用程序是 .net lucene(4.8,处于测试阶段)搜索(索引非常小,为 140MB,并与应用程序捆绑在一起 - 这在本地(在 docker 中)和 Azure Functions 应用程序中运行良好 - 响应时间为 2 位数毫秒。但是,一旦将其部署到 AWS 中,响应时间可能达到 3 位数毫秒。 我是 docker 的新手 - 我可以尝试在 AWS 中将响应时间降低到 2 位数毫秒

.NET Docker aws-lambda lucene lucene.net

评论

0赞 stdunbar 11/17/2023
为了获得更好的响应时间,首先不要使用 Docker。请记住,您可能会获得两位数的响应时间,但这是否包括每次容器的旋转?另外,你能把巨大的索引(是的,140MB对于Lambda来说是巨大的)放入EFS之类的东西中,这样容器就没有它,但所有的Lambda都可以访问它吗?
0赞 metase 11/17/2023
我可以尝试一下——我自然而然地认为数据越“接近”执行发生的位置越好。

答:

0赞 Nathan Carlson - MSFT 11/17/2023 #1

如果您的依赖项支持它,请考虑使用 AOT 发布您的应用。这样就无需每次都对代码进行 JITed,这可以提高响应能力,尤其是在扩展到 0 时频繁冷启动时。

如果选项中没有完整的 AOT,请考虑 Ready To Run,它可以减少在初始化时对代码进行 JIT 的需要(但允许分层编译,以便稍后根据需要使用 JIT)