|
1
14
这可能很长,但请容忍我,因为这可能会给你解决办法,可能会让你更好地理解 lambda是如何工作的? 或者你可以 跳到底部 “。” 解决办法 “如果你对阅读不感兴趣。 对于不知道冷启动的人,请阅读 this blog 为了更好地理解它。简而言之: 冷起动
现在考虑这些场景,以便更好地理解:
现在来谈谈你已经解决的问题的第一部分: 关于防止冷启动,这是一种可能性,但是,它并不能保证,普通的解决方法将只保温一个容器的lambda功能。为此,您可以使用调度事件(cron表达式)运行一个cloudwatch事件,该事件将每隔几分钟调用lambda函数以保持其温暖。 解决方法:对于您的用例,lambda函数将是 频繁调用 用一个 非常高的并发率 是的。为了避免尽可能多的冷启动,您将需要尽可能多的容器保持温暖,因为您希望达到最高并发。做这个你会的 需要延迟调用函数以允许此函数的并发性生成并达到所需的并发执行量 是的。这将迫使lambda增加所需的容器数量。因此,这会增加成本,并不能保证避免冷启动。 这就是说,这里有一个关于如何让多个容器同时为您的功能保暖的分解:
这里有几点需要考虑:
最后,这个解决方案可以减少冷启动,但它会增加成本,并不能保证冷启动会发生,因为在使用lambda时不可避免。如果应用程序需要更快的响应时间,那么LAMBDA冷启动会发生什么,我建议您在EC2实例中查看您的服务器。 |
|
|
2
3
我们正在使用java(spring boot)lambdas,并且已经得到了与kush vyas的答案几乎相同的解决方案,上面的答案工作得非常好。 然而,我们确实在负载测试期间发现,在“控制器功能”执行期间,经常会出现合法的用户请求,再次导致不可避免的冷启动。 所以,现在在我们的“控制器函数”中,我们有x个并发预热请求的常规数量,但是每执行5次函数,我们就额外调用目标lambda 2次。理论上说,我们最终会得到x+2个lambdas来保持温暖,但是对于5个预热调用中的4个,仍然会有2个冗余lambdas可以满足用户的请求。 它确实进一步减少了我们冷启动的次数(但显然仍然没有完全减少),我们仍然在考虑预热/睡眠时间组合的并发性/频率,以找到适合我们的最佳解决方案-这些值可能始终取决于特定情况下的负载要求。 |
|
|
3
1
如果你使用 serverless framework 有了aws lambda,你可以使用这个 plugin 在一定的并发级别上保持所有lambda的温暖。 |
|
|
4
0
我想分享一些小而有用的技巧,我们用这些技巧来减少与冷启动相关的“用户观察到的”延迟。在我们的例子中,lambda函数通过aws api网关处理来自前端的http请求,特别是当用户在输入字段中键入某些内容时执行搜索功能。通常用户在呈现ui之后会有一些延迟开始输入,所以我们有一些时间来执行对lambda函数的ping调用来预热它。当用户向后端发出请求时,lambda很可能就可以工作了。 事实上,这种方法在后端的冷启动上解决不了问题,你需要寻找其他选项来修复它,但是它可以是用户体验的改进而不需要太多的努力(比如热修复)。 有一件事你应该记住——如果你的服务是公开的,而且你关心google insights的分数,那么你应该小心实施这种方法。 |
|
Sampgun · CDN调用与lambda调用的巨大差异 10 月前 |
|
|
Andrew · 如何在社交网络订阅中添加多封电子邮件 1 年前 |
|
|
John O'Conner · 为什么未启用cloudwatch指标? 1 年前 |
|
|
Daisuke · 代码构建是成功的,但Jenkins不会停止 2 年前 |
|
whitebear · 为同一自动缩放组中EC2的自定义度量设置警报 2 年前 |
|
|
Csaba · 带有functionName的CDK仪表板指标 2 年前 |