返回

线上问题的魔鬼在于再现,闲鱼如何通过Replay系统解锁千人千面问题回放能力?

见解分享

闲鱼线上问题回放系统的起源

上线后遇到客户反馈线上问题,想要复现问题,经常要花费大量时间和精力。通常是通过尽可能详细地向用户询问复现步骤,然后在本地进行模拟,但是很多时候会存在信息不对称的情况, 用户出现问题时的环境,与本地环境差异较大,导致难以复现问题。如果用运营手段,通过询问更多用户来获取更全面的复现步骤,会花费大量人力和时间,而且无法保证复现率。

因此,闲鱼开发了一套线上问题回放系统,来辅助工程师解决线上问题。它能够记录用户操作行为、网络请求、前后端日志等信息,并生成一个回放文件,工程师可以将回放文件导入到本地,模拟用户操作步骤,复现线上问题。

Replay系统的设计思路

Replay系统主要分为两部分:

  • 采集端: 它是一个前端库,负责记录用户操作行为、网络请求、前后端日志等信息。
  • 回放端: 它是一个Node.js程序,负责将采集端记录的信息生成回放文件,并提供回放功能。

Replay系统的工作流程

  1. 用户在网页上操作时,采集端会将用户操作行为、网络请求、前后端日志等信息记录下来,并存储在本地。
  2. 当用户遇到问题并反馈给工程师时,工程师可以将采集端记录的信息导出为回放文件。
  3. 工程师将回放文件导入到回放端,回放端会根据回放文件模拟用户操作步骤,复现线上问题。

Replay系统的使用场景

Replay系统可以用于解决各种线上问题,例如:

  • 前端问题: 例如页面渲染错误、JavaScript错误、性能问题等。
  • 后端问题: 例如服务器端代码错误、数据库错误等。
  • 网络问题: 例如网络延迟、丢包等。

Replay系统的使用效果

Replay系统在闲鱼的使用效果非常好,它帮助工程师快速复现线上问题,大大提高了问题的解决效率。根据统计,Replay系统平均可以将线上问题的解决时间缩短一半以上。

Replay系统的未来展望

闲鱼计划在未来继续优化Replay系统,使其支持更多的功能,例如:

  • 支持移动端回放: 目前Replay系统只支持PC端回放,未来将支持移动端回放。
  • 支持多用户同时回放: 目前Replay系统只支持单用户回放,未来将支持多用户同时回放。
  • 支持回放文件的共享: 目前Replay系统不支持回放文件的共享,未来将支持回放文件的共享。

总结

Replay系统是一个非常有用的工具,它可以帮助工程师快速复现线上问题,大大提高问题的解决效率。闲鱼计划在未来继续优化Replay系统,使其支持更多的功能,更好地服务于工程师。