性能监控:RUM 与合成监控
合成监控 和 真实用户监控 (RUM) 是两种用于监控和提供 Web 性能见解的方法。RUM 和合成监控提供不同的性能视图,并具有优势、好的用例和不足。RUM 通常最适合理解长期趋势,而合成监控非常适合回归测试并在开发过程中减轻短期性能问题。本文将定义和比较这两种性能监控方法。
合成监控
合成监控涉及在“实验室”环境中监控页面的性能,通常在尽可能一致的环境中使用自动化工具。合成监控涉及部署脚本以模拟最终用户可能在 Web 应用程序中采取的路径,并报告模拟器体验的性能。测量的流量不是来自您的实际用户,而是合成生成的流量,收集有关页面性能的数据。
WebPageTest.org 是合成监控的一个示例。它是在受控环境中完成的,其中地理位置、网络、设备、浏览器和缓存状态等变量是预先确定的。它为主机和 CDN 提供每个服务的资产的水瀑布图,以及所有第三方脚本(如广告和分析服务)生成的每个第三方资产和资产请求。
控制环境变量有助于理解性能瓶颈发生的位置,并识别任何性能问题的根源。例如,它不能反映用户的实际体验,尤其是长尾。
合成监控可以是回归测试和生产网站监控的重要组成部分。在开发的每个阶段以及生产环境中定期测试网站。作为持续集成的一部分,基线性能的变化应该导致推送到失败。如果生产环境中出现问题,合成监控可以提供见解,帮助在对用户体验造成负面影响之前识别、隔离和解决问题。
真实用户监控
真实用户监控 或 RUM 测量页面来自真实用户机器的性能。通常,第三方脚本会在每个页面上注入一个脚本,以测量和报告每个请求的页面加载数据。此技术监控应用程序的实际用户交互。在真实用户监控中,真实用户的浏览器会报告所体验的性能指标。RUM 有助于识别应用程序的使用方式,包括用户的地理分布以及该分布对最终用户体验的影响。
与合成监控不同,RUM 捕获所有用户的性能,无论设备、浏览器、网络或地理位置如何。当用户与应用程序交互时,将捕获所有性能计时,无论采取何种操作或查看哪些页面。RUM 监控实际用例,而不是工程师、PM 或营销团队预先定义的合成用例。对于大型网站或复杂的应用程序,这一点尤其重要,因为这些应用程序的功能或内容不断变化,访问应用程序的人群在生活体验方面可能与创建应用程序的人群大不相同。
通过利用 RUM,企业可以更好地了解其用户并识别其网站上最需要关注的区域。此外,RUM 有助于了解用户的地理或渠道分布趋势。了解您的用户趋势有助于您更好地制定业务计划,并且从监控的角度来看,使您能够识别关键区域,以针对优化和性能改进进行定位。
RUM 与合成监控
合成监控非常适合在开发生命周期中捕获回归,尤其是在 网络节流 的情况下。它相当容易、廉价,非常适合在开发过程中对性能进行点检,作为衡量代码更改效果的有效方式,但它不反映真实用户正在体验的内容,并且仅提供狭窄的性能视图。
另一方面,RUM 提供来自使用该网站或应用程序的真实用户的真实指标。虽然这更昂贵且可能不太方便,但它提供了至关重要的用户体验数据。
性能 API
有很多监控服务。如果您确实想自己构建监控系统,请查看性能 API,主要是 PerformanceNavigationTiming
和 PerformanceResourceTiming
,但也包括 PerformanceMark
、PerformanceMeasure
和 PerformancePaintTiming
。