本文章是关于冷启动的一些讨论
我们知道开发者在开发Serverless应用时候,无需关注代码的运行环境,因为在函数运行时候,函数计算平台已经帮我们准备好运行环境了。但是Serverless容器的启动需要一段时间准备,这个启动的过程如下:

开发者要尽量缩小代码包。去掉不必要的依赖。例如,在Node.js中执行npm prune命令,在Python中执行autoflake 。另外,某些第三方库中可能会包含测试用例源代码,无用的二进制文件和数据文件等,删除无用文件可以降低函数代码下载和解压时间。
通常Java 运行的冷启动时间高于其他语言,Python的冷启动时间远低于nodejs。使用 Pyhthon这样轻量级语言可以大幅降低长尾延时
并发量一定的情况下,函数内存越大,冷启动表现越优。您可以使用内存&并发度探测工具进行合理的评估
VPC的初始化需要引入创建并挂载用户ENI,这个操作可能是数秒级别的。如果是没有需求的函数,不配置VPC功能对冷启动帮助很大。
各云厂商的函数计算通常是请求级别的隔离,即当客户端同时发起三个请求到函数计算,理论上会产生三个实例来进行应对,这个时候可能会涉及到冷启动问题,可能会涉及到请求之间状态关联问题等。阿里云函数计算 提供单实例多并发能力,允许单个函数处理多个请求。
使用Initializer 函数入口,函数计算会异步调用初始化接口,消除掉“User Code Init” 的时间。
Initializer函数可以引导用户将业务逻辑分为初始化逻辑和请求处理逻辑,并提取初始化逻辑放入Initializer函数中,比如深度学习场景下加载规格较大的模型、数据库场景下连接池构建、函数依赖库加载等。函数计算保证在请求处理函数执行之前,初始化函数必须成功执行过一次并且只有一次,不仅保证函数的正常执行,同时规避用户系统/函数升级带来的冷启动开销,帮助用户实现业务系统的热升级
利用 实例空闲后隔一段时间才会被回收 的特点,可以通过定时触发函数执行的方法,来实现实例预热。本插件Keep-warm-fc,就是帮助用户方便的享受定时预热的能力,有效降低冷启动概率
用户侧的冷启动一般难以消除。如果函数对延时非常敏感,您可以为函数设置预留模式实例,或者在同一个函数里同时使用预留模式实例和按量模式实例。
预留模式实例的分配和释放由您管理,根据实例的运行时长计费。当负载对资源的需求超过预留模式实例的能力后,系统自动使用按量模式实例,从而在性能和资源利用率上获得平衡。通过预留模式实例,您能够根据函数的负载变化提前分配好计算资源,系统能够在扩容按量模式实例时仍然使用预留模式实例处理请求,从而彻底消除冷启动带来的延时。

