KernelRanch
返回文章列表

成本控制与额度监控:免费额度什么时候会用完

2026-11-10 #Cloudflare

免费额度不是一个数字,是五六个数字。它们消耗速度差三个数量级,撞墙的先后顺序也完全不同。这篇做三件事:把每个额度换算成"每小时可用多少",标出最先耗尽的那个;给出三种监控手段,从看仪表盘到自己记数;最后说清楚什么时候该掏 $5,以及不掏钱时怎么降级。

各额度的原始数字见 56-free-tier-limits-cheatsheet.md,这篇讲怎么盯住它们。超限后的具体报错见 104-troubleshooting-playbook.md。

1. 额度换算

日额度除 24 得到的每小时速率,比原始数字直观得多。

项目免费额度折算速率谁先撞
Workers 请求100,000/天4,166/小时中等
Workers CPU10 ms/次—复杂逻辑才撞
KV 读100,000/天4,166/小时中等
KV 写1,000/天41/小时最先
子请求50/请求—扇出型接口
R2 存储10 GB-月—图多的站
R2 Class A100 万/月约 33,000/天很少
R2 Class B1000 万/月约 333,000/天很少
Pages 构建500/月约 16/天自动提交的项目

每小时 41 次 KV 写,意味着任何"每次请求都写一次"的设计都会在几分钟内把一天的量烧完。限流计数、点击统计、访问日志、在线人数,这几个常见需求全都是每请求一写,全都会撞在这一项上。

2. 五个隐性消耗

静态页放 Pages,请求不算 Workers 额度。但如果这个页面是 Worker 返回的 HTML,每次访问都是一次 Worker 请求,外加可能的 KV 读。同一个站点换个承载方式,额度消耗差一个数量级。

/favicon.ico 与 404 页面也走 Worker。一个没有资源处理的站点,每次页面加载可能产生 3 到 5 个请求(页面、favicon、几个静态资源),浏览器重试和爬虫会把数字再抬高。

定时任务按次计。每分钟一次的探测,一天 1440 次,看起来只占 1.4%,但同时它还会产生对上游的 fetch(子请求)和对 KV 的读。

构建次数被自动提交烧掉。仓库里有定时抓取生成日报、或 CI 每次跑完回写文件的流程,一天几十次构建,半个月就用完 500 次。

同一个 KV key 的写入被限到每秒一次。把热点配置项放在一个 key 里高频更新,会看到写入被丢弃,而额度可能还没用完。

3. 三种监控手段

控制台仪表盘最直接:Workers & Pages 的 Overview 有请求数与错误率,KV 页面有读写曲线,R2 有存储与操作数。缺点是只有聚合值,且要人去看。

GraphQL Analytics API 能把数据拉出来自己画图或报警:

curl -s https://api.cloudflare.com/client/v4/graphql \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"query":"{ viewer { accounts(filter:{accountTag:\"$ACCOUNT_ID\"}) { workersInvocationsAdaptive(filter:{date_geq:\"2026-11-01\"},limit:100) { sum { requests errors } dimensions { datetime } } } } }"}'

Token 需要带 Analytics 读权限。拿到的数据可以推进自己的看板,也可以写个定时任务,超过阈值就发消息。

自己记数最可靠:在请求入口加一次计数写入,按小时聚合后存 KV(每小时只写一次,不撞额度)。代价是多一次读写,而且计数本身也消耗额度——适合给关键接口做,不适合全站铺开。

4. 阈值与降级

用量动作
50%什么都不做,记一笔
70%检查是否有异常流量(爬虫、被刷、循环调用)
85%关闭非核心功能:统计、推荐、图片变换
95%核心接口降级为缓存响应,写接口返回 503 并给出说明

Workers 路由的 fail open / fail closed 也是降级开关。纯展示站设 fail open,额度耗尽时直接由边缘返回静态资源,用户看到的还是页面;带鉴权的接口设 fail closed,宁可 1027 也不能让请求绕过检查。

5. 什么时候该付 $5

Workers Paid 是 $5/月起,含每月 1000 万请求与 3000 万 CPU 毫秒,超出后每百万请求 $0.30、每百万 CPU 毫秒 $0.02。这个价格的门槛很低,判断标准不是"够不够用",是"故障的代价"。

如果额度耗尽会让业务停摆、或者要花时间做复杂的省额度改造,$5 比改造便宜。反过来,个人站、示例项目、内部工具,免费档加上降级策略就够。付费之后仍然要看额度,1000 万请求听起来很多,被爬虫刷起来也是几天的事。

6. 常见问题

额度什么时候重置?按 UTC 零点,对国内是早上 8 点。压测和排障时注意这个时间点,别把"早上 8 点后突然恢复"当成故障自愈。

超了会被扣钱吗?免费档不会扣钱,会停止服务并返回 Error 1027。付费档按量计费,没有硬上限,所以付费之后监控反而更重要。

能不能给额度设硬上限?可以在账号级别设支出上限(Spend limit),达到后相关服务停止。这个开关值得在开通付费的第一天就设上。

小结

免费额度里最先耗尽的几乎总是 KV 写入(41 次/小时),其次是 Workers 请求与 KV 读(各 4,166 次/小时)。设计的顺序应该是:先确认没有"每请求一写",再看请求量,最后才考虑 CPU 时间。

监控的投入要跟业务重要性匹配。个人站看一眼仪表盘就够,有真实用户的接口至少要有阈值告警与降级开关。成本优化的具体动作在 105-performance-cost-checklist.md 里按收益排了序。

数据来源与检索时间

检索时间 2026-11-10。

来源URL对应数据
Workers 定价https://developers.cloudflare.com/workers/platform/pricing/免费 100,000/天、10 ms CPU;付费 $5/月起、1000 万请求、3000 万 CPU 毫秒、$0.30/百万、$0.02/百万
KV 限额https://developers.cloudflare.com/kv/platform/limits/100,000 读/天、1,000 写/天、同 key 1 次/秒、1 GB 存储
R2 定价https://developers.cloudflare.com/r2/pricing/免费 10 GB-月、100 万 Class A、1000 万 Class B
Pages 限额https://developers.cloudflare.com/pages/platform/limits/500 构建/月

核验说明

  • 文档核对:Workers 与 R2 的免费/付费数字来自 2026-11-10 抓取的定价页,KV 与 Pages 数字来自限额页。
  • 未做:没有把任一额度跑到上限;没有实际调用 GraphQL Analytics(示例中的 $CF_API_TOKEN、$ACCOUNT_ID 为占位符,查询语句按公开 schema 写,未验证返回结构);支出上限开关未在账号内设置。
  • 折算速率与用量阈值为按额度的算术推导,是建议值而非官方规定。