产品派
返回

Cloudflare支持生产环境Workers按需生成火焰图

后端InfoQ 中文站2026/11/7 10:01:17
AI 导读

Cloudflare于2026年10月9日为Workers和Durable Objects增加按需CPU与内存性能剖析能力。开发者可通过Workers Observability控制台或cf CLI,对已部署的Worker版本采集数据并生成交互式火焰图,也能下载结果进行离线分析,从而不再只依赖日志和汇总指标排查性能问题。

火焰图中,宽度越大的区域代表对应函数占用的CPU时间或采样到的内存分配比例越高。与启动新实例进行测试不同,这项功能直接针对已经运行的隔离实例,能够观察真实生产流量下的代码执行情况。Durable Objects还支持指定实例剖析,但目标对象在采集期间必须获得足够流量;使用TypeScript时,启用源码映射有助于识别具体函数名称。

由于Workers会分布在Cloudflare边缘基础设施的多个数据中心和物理机器上,同一脚本可能同时运行多个隔离实例,因此请求需要先匹配目标Worker版本,再找到合适的活跃实例。Durable Objects具有状态并可能发生迁移,平台会把剖析请求路由至当前托管指定对象的机器。采集期间,运行时不会始终占用隔离实例锁:CPU剖析器以1毫秒间隔采样V8调用栈后释放锁,让请求继续处理,结束时再重新获取锁并汇总结果。

CPU和内存剖析关注的对象并不相同。CPU剖析用于发现执行时间集中在哪些函数、是否存在重复计算及优化空间;内存剖析则展示函数相关的内存分配,帮助定位对象创建过多或持续增加内存压力的代码。同一个函数可能消耗大量CPU却几乎不分配内存,另一个函数也可能产生大量分配但并非主要耗时来源,因此两类数据需要结合分析。

Cloudflare在内部测试中发现,一个使用R2绑定的Worker包含递归JSON替换函数,该函数反复遍历嵌套数据并执行了多余工作,修正后运行速度提升至原来的2.7倍。另一份CPU剖析还发现,一次不必要的重复指标调用约占总CPU时间的1%。内存剖析则显示,部分已禁用的Prometheus插桩代码仍在消耗大量内存;移除残留代码后,该Worker的第99.9百分位内存使用量从133 MB降至118 MB,低于128 MB限制。

这项能力并非要取代现有工具。Chrome DevTools适合开发阶段进行本地CPU剖析,但生产流量和数据往往难以复现;pprof则可用于分析下载的剖析数据。日志、指标和分布式追踪能够提示服务何时变慢或资源消耗异常,而剖析数据进一步帮助锁定具体函数。需要注意的是,按需采集不是持续监控,较短窗口可能错过间歇性问题,堆内存剖析记录的也是采集期间分配情况,并不能完整代表留存内存。Cloudflare表示正在推进持续性能剖析,以便调查难以预判出现时机的罕见问题。

CloudflareWorkers性能剖析火焰图

本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。

阅读原文