DigitalOcean 上的函数到底能热多久
来源:dev.to — 2026-10-26
📋 概述
冷启动的说法满天飞,但「函数能热多久」几乎没人真测过。作者在 DigitalOcean Functions 的 fra1 区起了 12 个函数:Python 与 Node 各分有无依赖两版,每个函数在被加载时生成一个随机 ID 并自增调用计数,靠返回值为 1 判断是否落在全新容器里,这样不必用延迟去猜冷热。客户端从保加利亚发起新连接,设置 12 档空闲间隔,从 30 秒到 60 分钟,每档在 12 个副本上各试一次,打乱顺序以免互相取暖。整轮跑了 3 小时 19 分、444 次调用、444 个 200,落在 113 个不同容器里。结论是:没有「一个数」。20 分钟以上一律冷;15 分钟以内是渐变的坡,不是断崖。真正决定命运的不是空了多久,而是空闲开始时容器已经活了多久——刚启动就被扔在一边的容器,几分钟后就没了。
🔑 核心要点
- 12 个函数、12 档空档、444 次调用,落在 113 个不同容器里,没有一次失败
- 空闲 20 分钟以上全部变冷,15 分钟以内是渐变曲线而非断崖
- 决定冷热的不是空了多久,而是空闲开始时这个容器已经活了多久
- 空闲前容器活过 3 分钟的 11 次全热,刚启动就被丢下的 39 次只热了 9 次
💡 金句
“What decided whether my function was still warm had less to do with how long it had been idle and more to do with how long it had been alive before that.”
译:决定函数是否还热着的,与它空闲了多久关系不大,更取决于它在此之前已经活了多久。
← 返回 dev.to 首页