Java 是最流行的编程语言之一,随着 AWS 及其各种服务和平台的使用量增加,它的受欢迎程度增加了很多。

AWS Lambda是一种计算服务,它运行代码以响应事件并自动管理该代码所需的计算资源。它的主要目的是简化构建响应事件和新信息的更小的按需应用程序。

在使用 Java 和 AWS lambda 开发应用程序时,开发人员可能会面临某些挑战,而 AWS Lambda 和冷启动问题是在关键时刻出现的最令人沮丧的问题之一。

什么是冷启动?

触发 lambda 函数时经历的延迟称为“冷启动”。当 AWS Lambda 函数在长时间不使用后被调用时会触发冷启动,从而导致调用延迟增加。无服务器应用程序初始化为请求的执行增加了额外的延迟,因为它需要在处理请求之前完成。

导致 AWS Lambda 平台冷启动的原因和场景:

没有活着的容器;

有容器活着,但没有一个可用,因为它们都忙于处理其他请求;

部署了一个新应用程序,因此新容器必须从较新版本的应用程序开始;

配置的变化(环境变量、安全组、内存限制等),所以新的容器必须以新的配置开始。

增加冷启动时间的因素:

语言选择

专有网络

HTTPS 调用

内存大小

代码大小

需要类路径扫描的东西(Java)

提高冷启动性能的解决方案:

使用 Python、Ruby 或 Pearl 等动态编程语言,而不是静态类型的编程语言 C++ 或 Java。

不要使用虚拟私有云 (VPC)。VPC 会为你的 AWS Lambda 增加大量时间,从而导致冷启动。

内存大小线性地提高冷启动时间,但价格昂贵。提供 3008 MB 内存需要 2 秒,而提供 704 MB 内存需要 7 秒,2048 MB 内存需要 4 秒。

如果你希望将 Java 用于 AWS Lambda 函数,则绝对应该避免扫描类路径的依赖项,例如 Spring。这是对冷启动的公开邀请。

基于 HTTP 的通信比基于 HTTPS 的通信具有更少的冷启动开销,因为基于 HTTPS 的通信需要 TLS 握手、加载(读取、解析和验证)大量与安全相关的类,初始化安全组件(密码等)。

保持容器温暖。让 AWS Lambda 保持温暖的策略之一是使用 CloudWatch。只需每 5-15 分钟 ping 一次你的 Lambda 函数以使其保持温暖。

分析:通过使用 CloudWatch 和每 5 分钟的调度程序保持 Lambda 温暖,在冷启动期间注册 API 只需 300 毫秒,但保持 Lambda 温暖会增加 AWS 服务的成本,因为它每 5 分钟命中每个 lambda 函数。

冷启动可以通过缩短持续时间、增加函数的内存设置、保持容器温暖以及最小化持续时间和它们发生的次数来优化。这将有助于解决在某些用例和应用程序中可能成为交易破坏者的问题。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部