AWS Lambda 上的 Spring Boot 应用程序 - 使用 Docker 容器映像测量 Lambda 函数的冷启动和热启动部分
技术百科
DDD
发布时间:2024-09-17
浏览: 次 介绍
在如何使用 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 函数 GetProductByIdWithSpringBootJava21DockerImage 在 1 小时内重现超过 100 次冷启动和大约 100.000 次热启动,该函数映射到负责检索产品(存储)的 Java Lambda 处理程序类在 DynamoDB 中)通过其 id。为此,我使用了负载测试工具,但是您可以使用任何您想要的工具,例如 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。
# 应用程序
# 我在
# 将其
# 您可以
# 适用于
# 我们可以
# 镜像
# 冷启动
# docker
# Java
# function
# Lambda
# spring
# 如何使用
# postman
# 将于
# spring boot
# serverless
# spring cloud
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Go 语言标准库为何不提供泛型 Contains
- MAC怎么在照片中添加水印_MAC自带编辑工具文字
- php条件判断怎么写_ifelse和switchc
- c++ std::future和std::prom
- 如何在 PHP 单元测试中正确模拟带方法的图像处理
- Python随机数生成_random模块说明【指导
- Win10系统映像怎么恢复 Win10使用系统映像
- 如何在Golang中编写端到端测试_Golang
- php订单日志怎么导出excel_php导出订单日
- Win11怎么开启空间音效_Windows11耳机
- Win11如何设置系统声音_Win11系统声音调整
- Windows 11怎么设置默认解压软件_Wind
- 如何使用Golang管理模块版本_Golanggo
- Win11怎么关闭粘滞键_彻底禁用Windows
- 如何使用Golang table-driven f
- Win10怎么关闭自动更新错误重启 Win10策略
- Windows10怎么用“讲述人”读屏辅助 Win
- LINUX怎么设置系统语言_LINUX修改中文环境
- Win10如何关闭安全中心所有通知 Win10禁用
- Go语言中CookieJar的持久化机制解析:内存
- c# 在高并发场景下,委托和接口调用的性能对比
- 如何在JavaScript中动态拼接PHP的bas
- 本地php环境打开php文件直接下载_浏览器解析p
- c++中的可变参数模板(variadic temp
- Win11怎么格式化U盘_Win11系统U盘格式化
- Python集合操作技巧_高效去重解析【教程】
- Python与GPU加速技术_CUDA与Numba
- Win11怎么开启远程桌面_Win11系统远程桌面
- Win11怎么关闭系统推荐内容_Windows11
- Python性能剖析高级教程_cProfileLi
- Win11怎么更改任务栏颜色_Windows11个
- Win11怎么更改账户头像_Windows 11自
- 如何在Golang中实现自定义Benchmark_
- Win10电脑C盘红了怎么清理_Windows10
- Win11怎么用设置清理回收站_Win11设置清理
- PHP主流架构怎么部署到Docker_容器化流程【
- 手机php怎么转mp4_手机端php文件转mp4a
- Mac如何修复应用程序权限问题_Mac磁盘工具修复
- 如何在Golang中处理JSON字段缺失_Gola
- Dapper的Execute方法的返回值是什么意思
- c++怎么设置线程优先级与cpu亲和性_c++ 多
- Windows10如何更改日期格式_Win10区域
- 如何减少Golang内存碎片化_Golang内存分
- Win11怎么恢复误删照片_Win11数据恢复工具
- Win11摄像头无法使用怎么办_Win11相机隐私
- Win11怎样安装钉钉客户端_Win11安装钉钉教
- 如何使用Golang搭建本地API测试环境_快速验
- Python函数参数高级用法_默认值与可变参数解析
- Win11怎么关闭通知中心_Windows11系统
- c++如何获取map中所有的键_C++遍历键值对提

QQ客服