关于 AWS Lambda 中的冷启动,你想了解的信息都在这!

2021-01-07 10:10:13 浏览数 (1)

原文: https://hackernoon.com/cold-starts-in-aws-lambda-f9e3432adbf0

作者:Serhat Can

译者:donghui

有许多关于 AWS Lambda 中冷启动的博客文章。我正在做一些研究,想在这里列出一些好的文章以及一些要点,以便快速了解该主题。

译注:除了原文的内容外,译者也参考了其他博客,并将其中一些有用的观点整合到该文章(特别是解决方案部分)。

什么是冷启动?

冷启动是触发函数时遇到的延迟。

仅当没有空闲容器等待运行代码时,才会发生冷启动。这一切对于用户都是不可见的,AWS 完全控制何时终止容器。

冷启动有什么影响?

  • 由于响应缓慢而使用户沮丧
  • 为速度付出更多的钱(有时)
  • 如果不仔细考虑,则会出现调用函数中的超时-连锁反应
  • 关心与你无关的运营问题

何时应该关注冷启动?

  • 如果你使用的是 Java 和 C# 之类的静态类型语言
  • 如果你有面向客户/同步的应用程序
  • 如果你的请求量少或稀疏
  • 部署新版本后(所有容器均被销毁)
  • 配置中的更改(环境变量,安全组,内存限制等),新容器必须以新的配置启动

什么因素会增加冷启动时间?

  • 语言选择
  • 内存大小
  • 代码大小
  • VPC
  • HTTPS 调用
  • 需要类路径扫描的事物(Java)

这个问题有什么解决方案吗?

首先,接受你不能保证不会遭受冷启动的感觉。最终的解决方案必须来自云提供商。我们只能尝试改进。

  • 如果这不是一个大问题,那么什么也不做(建议)
  • 等待 AWS 对其进行改进(例如 AWS 提供了预置并发功能、并针对 VPC 网络做了改进等)
  • 使用动态编程语言(例如 Python、NodeJS 或 PHP ),而不要使用静态类型的编程语言(例如:C 、C# 或 Java)
  • 使用 HTTP 而不是 HTTPS
  • 增加内存(并支付更多)
  • 做一些预热(在 AWS 没有提供预置并发之前,可以尝试定时触发函数以保持函数实例是热的)

一些有用的资源

译注:除了原作者提供的下面下面前4个链接资源外,译者也增添了一些很有参考意义的资源链接,它们对于研究冷启动都非常有帮助。

How does language, memory and package size affect cold starts of AWS Lambda?

https://read.acloud.guru/does-coding-language-memory-or-package-size-affect-cold-starts-of-aws-lambda-a15e26d12c76

Dealing with cold starts in AWS Lambda

https://medium.com/thundra/dealing-with-cold-starts-in-aws-lambda-a5e3aa8f532

Resolving Cold Start️ in AWS Lambda

https://medium.com/@lakshmanLD/resolving-cold-start️-in-aws-lambda-804512ca9b61

How to Warmup

https://docs.thundra.io/docs/how-to-warmup

Dealing With Serverless Cold Starts, Once and For All!

https://dzone.com/articles/dealing-with-serverless-cold-starts-once-and-for-a

Cold start / Warm start with AWS Lambda

https://blog.octo.com/en/cold-start-warm-start-with-aws-lambda/

AWS Lambda Performance and Cold Starts

https://dzone.com/articles/aws-lambda-performance-and-cold-starts

New for AWS Lambda – Predictable start-up times with Provisioned Concurrency

https://aws.amazon.com/cn/blogs/compute/new-for-aws-lambda-predictable-start-up-times-with-provisioned-concurrency/

Announcing improved VPC networking for AWS Lambda functions

https://aws.amazon.com/cn/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/

Java Cold Starts in AWS Lambda

https://www.graycelltech.com/java-cold-starts-in-aws-lambda/

Using Amazon RDS Proxy with AWS Lambda

https://aws.amazon.com/blogs/compute/using-amazon-rds-proxy-with-aws-lambda/

Serverless in 2020 gets even better with re:Invent improvements for AWS Lambda - cold starts are "finally gone"

https://www.rwilinski.me/blog/serverless-at-reinvent-2019/

0 人点赞