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

原创
2020/11/26 10:42
阅读数 1.5K
 
作者: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?
 
Dealing with cold starts in AWS Lambda
 
Resolving Cold Start️ in AWS Lambda
 
How to Warmup
 
Dealing With Serverless Cold Starts, Once and For All!
 
Cold start / Warm start with AWS Lambda
 
AWS Lambda Performance and Cold Starts
 
New for AWS Lambda – Predictable start-up times with Provisioned Concurrency
 
Announcing improved VPC networking for AWS Lambda functions
 
Java Cold Starts in AWS Lambda
 
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"
 
 
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部