Serverless自动弹性伸缩的特性让应用具备了无限扩展的能力,但基于FaaS的实现也带来了很大的副作用,即冷启动,冷启动是代码在处理业务功能之前的额外开销。
既然冷启动会影响Serverless的性能,能否应用低延迟高并发场景呢?
Serverless的性能优化核心就是减少冷启动
深入理解Serverless冷启动是优化Serverless应用性能的前提。
函数启动过程示意图
冷启动经过多个步骤,耗时较长。
使用链路追踪工具比如AWS的X-Ray,阿里云的链路追踪,Lambda,函数计算可以查看冷启动耗时执行时间从而判断和分析Serverless应用的性能。
函数计算链路追踪截图
?InvokeFunction表示函数执行总时间
?ClodStart表示函数冷启动时间
?PrepareCode表示函数冷启动过程中下载代码或下载自定义镜像的时间
?RuntimeInitialize是执行环境启动的时间,包括启动容器和函数运行环境
?Invocation表示执行函数时间
上图说明这是执行冷启动的过程,因为热启动没有ClodStart、PrepareCode、RuntimeInitialize。
整个函数执行耗时ms,冷启动ms,由此可见,冷启动对函数性能影响很大。
什么时候函数是冷启动或者热启动呢
函数第一次执行的时候一定是冷启动,但后面的请求不一定都是热启动,这与触发函数执行的事件是串行还是并行有关。
串行访问
以