是的,阿里云函数计算在冷启动时需要一定的时间来准备运行环境,一般需要1分钟左右。在冷启动过程中,阿里云函数计算会先下载并解压相应的函数运行环境,然后执行函数代码。在函数被触发后,如果已经有运行环境,就不需要再进行下载和解压,直接执行函数代码,速度会更快。
冷启动频率增大是Serverless vs. Serverful 架构引入的一个新的挑战,过高的延迟可能会让对长尾延迟(P99)敏感的业务望而却步。在函数计算中,可以采用下面的办法来减小冷启动的影响。
精简紧凑的代码包: 开发者要尽可能瘦身代码包,去掉不必要的依赖。降低Download/Extract Code的时间。例如对Nodejs函数使用npm prune, 对Python函数使用autoflake , autoremove 去除没有使用的依赖。另外一些第三方库中可能会包含test源代码,无用binary,和数据文件。有选择地删除无用文件可以降低函数代码下载解压时间。
选择合适的函数语言: 在热启动延迟差别不大的情况下,使用Python这样的轻量语言可以大幅降低长尾延迟。 选择合适的内存: 在并发量一定的情况下,函数内存越大,冷启动表现越优。
避免不必要的配置: 对于没有需求的函数,不配置VPC功能对冷启动有很大帮助。
降低冷启动概率:
使用定时触发器 预热函数 使用Initializer 函数入口,函数计算会异步调用初始化接口,消除掉“User Code Init” 的时间,在函数计算系统升级或者函数更新过程中,用户对冷启动几乎无感知。
冷启动是Serverless运行环境中开发者必须面对的痛点。开发者可以通过精简代码,选择合适配置降低冷启动的影响。
你好,1分钟确实太久。 可以优化下。比如 1.瘦身代码包,去掉不必要的依赖 2. 改用开发语言,函数计算Java8运行时通常冷启动时间要高于其他语言 3. 提高内存,函数内存越大,冷启动表现越优 4. 优化函数配置,比如VPC优化 5. 使用定时触发器 预热函数 等等。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。