知识卡片

自制预热需要并发请求而非顺序请求

专业/工作 · 332.a.2

内容

不依赖云厂商付费的”预留实例”功能,也能自己实现[[冷启动优化的三层手段]]里的主动预热:写一个定时 触发的预热函数,去请求目标函数的一个轻量接口。但这里有个容易踩的坑——如果预热函数顺序发起N次 请求,由于[[冷启动的本质原因]]中提到的实例复用机制,第二次请求大概率会直接命中第一次请求刚创建 的那个热实例,实际只预热了1个实例;必须用多线程/异步的方式并发发起N个请求,才能倒逼平台在 同一时刻创建出N个独立实例,从而真正把并发所需的实例池都预热到位。发散:这个坑本质上是对 “实例复用”这个优化机制的一次反向利用——平时是好事的复用,在预热场景下反而会让预热请求互相”抵消”, 说明理解一个优化机制的触发条件,才能知道什么时候需要主动绕开它。

参考来源

《Serverless工程实践:从入门到进阶》第11章《Serverless工程化项目实践》