AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器映像测量 Lambda 函数的冷启动和热启动部分
2024-09-18 15:08:11
在如何使用 Docker 容器镜像和 Java (21) 在运行过程中开发和部署 Lambda 在函数一文中,我逐渐介绍了如何使用它 Docker 容器镜像和 Java 21 在运行过程中开发和部署 Lambda 不使用任何框架的函数。由于 Docker 容器镜像是一种通用格式,可以简单地使用 Spring Cloud Function AWS 本文介绍了开发应用程序一文中介绍的内容 Spring Cloud Function 应用程序,并使用相同的步骤部署。因此,我在这里发布了应用程序的重新设计版本(添加 Dockerfle 并更改 SAM 模板)将其部署为 Docker 映像。对于所有 Lambda 我们使用函数 JAVA_TOOL_OPTIONS:“-XX:+TieredCompilation -XX:TieredStopAtLevel=1”(这是冷启动时间和热启动时间之间的合理权衡)并提供给它 1024 MB 内存。使用 AWS Serverless Java Container 同样的效果也可以实现。
使用 Spring Cloud Function 和 Docker 容器镜像作为部署格式测量 Lambda 冷启动和热启动函数以下实验结果是基于使用 Lambda 函数 GetProductByIdWithSpringBootJava21DockerImager 在 1 超过在小时内重现 100 二次冷启动及约 100.000 次热启动,该函数映射到负责检索产品(存储)的产品 Java Lambda 处理程序类在 DynamoDB 中)通过其 id。为此,我使用了负载测试工具,但你可以使用任何你想要的工具,比如 Serverless-artillery 或 Postman。为此,我使用了负载测试工具,但你可以使用任何你想要的工具,比如 Serverless-artillery 或 Postman。
冷 (c) 和暖 (m) 开始时间(以毫秒为单位):
c p50
c p75
c p90
c p99
c p99.9
c max
w p50
w p75
w p90
w p99
w p99.9
w max
4558.68
4622.92
4749.37
5002.74
7183.64
7185.5
7.16
7.94
9.09
20.99
52.47
1313.08
我们在这篇文章中使用它 AWS Lambda 基础 Docker 测量容器图像的方法 Lambda 冷启动和热启动函数。与使用 Docker 容器映像和 Java (21) 运行时不使用 Spring (Boot) 框架的 Lambda 与测量函数相比,我们经历了更高的冷启动时间和略高的热启动时间,而且与使用 Spring Boot 与其他测量冷启动时间的方法相比:本系列前一篇文章介绍了 AWS Serverless Java Container、AWS Lambda Adapter 和 Spring Cloud Functions。
AWS Lambda SnapStart 可以显著缩短冷启动时间,目前仅适用于 Java Corretto 托管运行时(11、17 和 21),不适用 Docker 容器映像。您可以探索 jlink 工具将一组模块及其依赖项组装和优化为更小的自定义运行图像和类数据共享 (CDS),但是,这有助于减少 Java 编程语言应用程序(尤其是较小的应用程序)的启动时间,以及减少占地面积。使用 Docker 映像作为 Java 部署工件的优点是可以使用最新的 Java 运行时,如将于 9 月发布的 Java 23。
以上是AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器图像测量 Lambda 更多关于图灵教育的其他相关文章,请关注函数冷启动和热启动的详细内容!