近期Cloudflare为Workers及Durable Objects引入按需性能剖析功能,2026年10月9日正式发布,覆盖开发、生产场景。该功能可通过控制台或CLI生成交互式火焰图,实时定位生产环境耗时函数、内存分配,无需仅依赖传统日志与指标。剖析数据可离线下载分析,针对已运行隔离实例开展,无需新实例部署,可检查真实流量下的代码执行效率。该功能兼具CPU与内存剖析能力,前者采样调用栈剖析耗时,揭示复杂函数与重复计算;后者聚焦内存分配,提示对象过度创建等问题。剖析数据可辅助缩小排查范围,Cloudflare内部已借此发现冗余计算、内存耗用问题,例如修正JSON递归函数后性能提升2.7倍,移除闲置插桩代码后内存使用量显著下降。此外,功能可结合现有日志、指标、追踪工具使用,从资源消耗到具体瓶颈全面诊断应用运行状况。需明确该功能为补充性工具,Chrome DevTools与pprof在开发场景适用性更强,而生产数据复现难度较高;Cloudflare持续推进持续剖析,以应对罕见性能问题,为生产工作负载团队提供无需本地复现即可精准定位性能问题的实用调试能力。
--91likeyou---
运行时不会在整个采集过程中一直持有隔离实例锁。进行 CPU 性能剖析时,它会启动一个以 1 毫秒为间隔采样的 V8 性能分析器,随后释放锁,让请求继续执行;结束剖析并收集结果时,再重新获取锁。这使平台能够观察实时执行情况,而不必在采集期间暂停正常的请求处理。
CPU 和内存剖析回答的也是不同的问题。CPU 剖析通过采样调用栈,揭示执行时间花在了哪里,帮助找出耗时较多的函数、重复计算和潜在的优化机会。相比之下,内存剖析突出显示与函数相关的内存分配,帮助开发者找到创建过多对象或加重内存压力的代码。
这一区别对于诊断性能问题很重要:一个函数可能消耗大量 CPU,却几乎不分配内存;另一个函数则可能产生大量内存分配,但并非执行时间的主要来源。查看相应的剖析数据,有助于将调查范围缩小到相关的资源瓶颈。
Cloudflare 在内部使用该功能找出了不必要的计算和内存消耗。对一个使用 R2 绑定的 Worker 进行性能剖析时,团队发现一个递归 JSON 替换函数反复遍历嵌套数据,执行了多余的工作。据称,修正实现后,该函数的运行速度提高到原来的 2.7 倍。另一份剖析数据则发现一次不必要的重复指标调用,约占 CPU 时间的 1%。
内存剖析还发现了另一个问题:据称,部分禁用的 Prometheus 插桩代码仍在消耗大量内存。Cloudflare 称,移除剩余代码后,该 Worker 的第 99.9 百分位内存使用量从 133 MB 降至 118 MB,低于 128 MB 的限制。
Cloudflare 的功能是对现有工具的补充,而不是替代。Chrome DevTools 支持本地 CPU 性能剖析,适合开发阶段使用,但生产流量和数据可能难以复现。pprof 广泛用于 Go 及其他受支持的性能剖析工作流,提供强大的离线剖析数据分析能力;Cloudflare 也允许使用 pprof 检查下载的剖析数据。Cloudflare 这项功能的主要区别在于,可以通过平台现有的运维界面,对正在运行的 Workers 和 Durable Objects 发起性能剖析。
该功能也补充了日志、指标和分布式追踪。这些工具有助于发现服务何时变慢或消耗过多资源,而剖析数据可以帮助定位负有责任的函数。结合使用,便能更全面地了解应用的运行情况。
按需采集并非持续监控。较短的性能剖析窗口可能错过间歇性问题;堆内存剖析记录的是采集期间的分配情况,不能完整反映留存内存。Cloudflare 表示正在推进持续性能剖析,以便在无须预先判断问题何时出现的情况下,更容易调查罕见的性能问题。
对于在 Cloudflare Workers 上运行生产工作负载的团队,此次发布增加了一项实用的调试能力:无须先在本地复现问题,就能从发现资源压力进一步定位到造成问题的代码。
:
🔥 热词:#Cloudflare · #Workers · #CPU · #Worker · #Objects · #线上 · #变慢 · #本地却复现不了