0

0

AWS Lambda 上的 Spring Boot 应用程序 - 使用 GraalVM Native Image 测量冷启动和热启动的部分

聖光之護

聖光之護

发布时间:2024-12-09 16:21:15

|

1082人浏览过

|

来源于dev.to

转载

aws lambda 上的 spring boot 应用程序 - 使用 graalvm native image 测量冷启动和热启动的部分

介绍

在使用 Spring Boot 3 和 GraalVM 本机映像开发 Web 应用程序一文中,我们探讨了如何使用包含从 Spring Cloud Function(及其 AWS 适配器)创建的 GraalVM 本机映像(使用 GraalVM 22 运行时)的自定义运行时来开发和部署 Lambda 函数) 应用。

在本文中,我们将使用这种方法测量 Lambda 函数的冷启动和热启动。

使用包含 GraalVM Native Image 的自定义运行时测量 Lambda 函数的冷启动和热启动

对于我们的测量,我们将使用第 2 部分中的示例应用程序,并为所有 Lambda 函数提供 1024 MB 内存。

下面的实验结果基于使用 Lambda 函数 GetProductByIdWithSpringBoot32GraalVMNative 在 1 小时内重现超过 100 次冷启动和大约 100.000 次热启动,该函数映射到负责检索产品的 Lambda 处理程序类(存储在DynamoDB)通过其 id。为此,我使用了负载测试工具,但是您可以使用任何您想要的工具,例如 Serverless-artillery 或 Postman。

冷 (c) 和暖 (m) 开始时间(以毫秒为单位):

Autoppt
Autoppt

Autoppt:打造高效与精美PPT的AI工具

下载
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
1051.03 1061.58 1080.86 1119.34 1149.45 1230.28 6.45 6.77 7.33 12.50 90.92 218.17

结论

在本文中,使用自定义运行时测量了具有 1024 MB 内存的 Lambda 函数的冷启动和热启动,该运行时包含从使用 Spring Boot 3 和 GraalVM 本机映像开发 Web 应用程序一文中介绍的 Spring Cloud Function 应用程序创建的 GraalVM 本机映像。

将本文中的这些性能测量值与我们对 AWS Serverless Java Container、AWS Lambda Web Adapter 和 Spring Cloud Function 所做的测量值进行比较,我们发现使用 GraalVM Native Image 的热启动时间最短。 GraalVM Native Image 的冷启动时间通常低于所有其他方法的测量值。唯一的期望是使用支持 SnapStart 的 Lambda 函数的 AWS Web Adaptor 进行冷启动,并额外启动 DynamoDB 请求,我们测量到的冷启动时间略短。

当我们将冷启动时间与使用不同 Lambda 内存设置(其中我们的 Lambda 函数不使用 Spring Boot 等任何框架)的 GraalVM Native Image 测量纯 Lambda 函数的冷启动和热启动一文中测量的时间进行比较时,我们看到对于具有相同 1024 MB 内存的 Lambda 函数,使用纯 Lambda 函数时每个百分位数的值要低约 0.5-0.6 秒。我个人认为我的示例 Spring Boot 3 应用程序具有一定的优化潜力,因为我无法解释它们之间的冷启动时间如此大的差异。也许作为读者的您可以帮助我优化我的代码,因为我的(也许是天真的)期望是,与 AWS Lambda 和 GraalVM Native 映像一起使用 Spring Boot 3 框架可能会比之前的冷启动时间高大约 0.2-0.3 秒使用纯 Lambda 函数,但不是 0.5-0.6 秒。

在发布本文时,新版本已经可用(GraalVM 23 运行时、Spring Boot 3.4 和 Spring Cloud Function 库的小更新),因此您可以对 pom.xml 进行版本更改并重新编译 GraalVM Native 映像按照本系列第 2 部分的说明重新测量性能。
在本系列的下一篇文章中,我们将探讨不同 Lambda 内存设置(从 256 到 1536 MB)对冷启动和热启动时间的影响,因为内存设置也会严重影响运行 Lambda 函数的成本。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

835

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

741

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

736

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

68

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号