优化#
平台侧优化 [1]#
冷启动(Cold Start)的耗时大部分和以下 4 个方面有关。
- 1.资源调度和容器创建过程: 一般在秒级别时间完成;
- 按需加载
- P2P 加速
- 2.代码和依赖层的下载过程:取决于代码大小以及是否有加速,一般从毫秒到秒级别不等;
- 常用依赖的内置化
- 3.VPC 网络的打通过程:主要是弹性网卡和路由下发耗时,通常在秒级别;
- 在集群 VPC 内部创建代理
- 4.运行时与用户代码初始化过程:和用户比较贴近,依据不同的语言,启动时间会有所影响,大概在毫秒到秒之间不等。 -加快函数运行环境的创建
- 自动扩缩容
- 基于函数互相调用的场景进行提前预测
- 基于函数的版本进行预测
- 根据提前加载镜像的方式,部署到 Node 中
- 自动扩缩容
- 1.资源调度和容器创建过程: 一般在秒级别时间完成;
4.1 阿里Cloud Service Engine(CSE) 内部产品, 应用容器启动加速[3]
- L1: 容器提前启动,并且对容器进行冻结。
应用实例 CPU 占用率为0,RAM 占用相当于之前的1/20。 - L2: 磁盘快照: 容器持久化到磁盘
时间消耗主要是数据的网络传输时间+内存拷贝时间。 - L3: 完全冷启动

- L1: 容器提前启动,并且对容器进行冻结。
4.2 AWS Lambda 中使用的方法是维护一个热的 VM 实例池[5]
4.3 AWS Lamdba的延迟因素
- 函数运行的并发限制: 1000
- 冷启动时间
预配置并发,预热Lambda执行环境
预配置并发,使用环境来立即执行代码
5 用户侧的优化手段 [1]#
- 合理控制代码包的大小;
- 选择性能较高的运行时;
- 成本可控范围内合理使用预留实例;
阿里云 函数计算的预留实例[11]
预留实例的执行环境是长驻的,彻底消除冷启动对业务的影响 - 定时任务激活延时敏感较高的函数实例;
- 本地缓存的的合理利用。
混合部署#
更小的资源占用率, 更短的运行时间更易于混合部署。[3][5]
参考#
1.《04|冷启动:如何加快函数的第一次调用过程?》 《Serverless进阶实战课》
3. 研发运维效率提升100%,机器成本下降50%,阿里巴巴在 Serverless 计算领域的探索 阿里
I. 提高启动时间 II. 混合部署 优化
CSE:阿里在线应用如何演进成Serverless架构
5. 无服务计算的未来和挑战: A Berkeley View on Serverless Computing ***
9. 分享 KubeCon 2019 (上海)关于 Serverless 及 Knative 相关演讲会议
《加速:无服务器平台中的冷启动优化》- 腾讯云函数计算冷启动优化实践
《Knative Serving 内部介绍》
11. 预留实例简介 优化