实例解析:实时通信质量问题的监控与分析

avatar

声网“水晶球”Agora Analytics 是声网为开发者免费提供的实时通信质量监控与分析工具,能帮开发者快速定位、分析实时通信过程中遇到的通话质量问题。本文将结合一些实例,分享实时通信质量的技术指标与使用方法。

欢迎访问声网 Agora问答版块,发帖与我们的工程师交流。

从直播、社交、教育,到游戏、IoT、金融等,目前声网正为各种各样的产品提供着实时通信服务。但我们声网认为作为实时通信云服务,服务不应止于通信,后续的通信质量监控与分析对开发者同样重要。

那些困扰我们的实时通信质量问题

从我们的经验来讲,实时通信场景下,会有多种问题,通常可以归类为以下几种:

  • 音视频不可用(音频听不到,视频看不到等)
  • SDK不稳定(比如崩溃等)
  • SDK性能差(比如 CPU 占用过高等)
  • 通话体验差:
    • 音视频卡顿
    • 视频模糊
    • 音视频延迟
    • 音质不好(回声,噪音等)
    • 音画不同步
    • 首帧出图慢

而通话体验差,通常的原因有以下这么几类:

  • 设备问题,如型号老旧、系统兼容性差、故障。

  • 网络环境问题,如终端用户带宽因过低。

  • 集成问题,如错误的 API 调用、使用了有问题的库。

  • 终端用户误操作问题,如用户自己按了静音等。

  • 声网服务问题,如 SDK 或 SD-RTN™ 的 bug 或其它问题。

从声网的角度来讲,我们有一套标准的质量评定规则。譬如,当视频通话时,如果发送端的 Video Send Loss >40%,且比例超过了 10%的时候,我们认定上行丢包过高,也就是说上行的网络较差。

再譬如,音频通话时,如果发现卡顿时间 >3s,且卡顿时间 ÷ 通话时间 ≥ 8%;或卡顿次数 ≥20 ,且通话时长 ÷ 卡顿次数 ≤30s,那么这时视为音频出现比较明显的卡顿。

当然,这只是其中的两种情况,你可能还遇到过网络异常、录音声音等各种各样的问题,对此,我们也有相应的评定标准。同时,开发者们肯定会遇到很多特殊的通信场景,针对于场景的特点,评定标准也需要进行适当调整。

解决一个实时通信质量问题的“传统”路径

我们以一个在线教育场景下真实发生的事情为例。

在一个多人的在线课堂里,上课过程中,有一个学生反映“刚刚有一堂课效果很不好,因为画面一直卡”。在教育场景下,很多课程都是付费的,当收到学生的投诉后,这个教育平台非常着急,向我们求助,希望能查一查影响这位学生上课体验的原因。我们很快为他们做了诊断和分析,结果发现,刚才那位老师是用的是高清分辨率画面,而这位学生用的第一代的 iPad,但它不支持这种高清分辨率。所以一整个教室中,只有这位学生感到体验很差。经过我们反馈后,他们知道问题出在学生的设备上,于是让学生换了一个设备听课就解决了。

这只是一个案例。终端用户遇到问题会找到客户,而客户遇到用户投诉但又无法自己调查,会导致整个问题解决的效率很低。这里面有三个角色,终端用户、客户、声网。涉及的问题层层传递,等我们最后调查问题,给出结论,到解决问题,可能已经过了几个小时,这期间问题仍然存在,学生一天的课程上完了,却体验很差。

在回顾上文所提到的,通常导致通话体验差的几类原因。你会发现,其中很多问题是开发者能自己为终端用户快速解决的。所以我们认为,能提供实时通信服务还不够,还需要将服务质量透明化,展示给使用的开发者

质量透明,即为开发者呈现实时通信质量数据后,一方面,开发者可以直观了解到终端用户口中的“体验差”是差在哪里,有多长时间的影响,另一方面,可以确定是网络问题、设备问题,还是其它问题。质量透明可以加速服务质量与产品体验的迭代、优化。

由此,我们为开发者免费提供了实时通信质量监控与分析工具“水晶球”Agora Analytics。

免费的实时通信质量监控与分析工具“水晶球”

“水晶球”可以为开发者提供端到端的全链路通信质量数据,包括用户端设备性能(如 SDK 对 CPU 的占用情况)、系统、上下行网络丢包、音频与视频发送帧率等信息。开发者在进入 Dashboard 后,可在左侧边栏找到并使用“水晶球”。

目前“水晶球”已经发布第一个版本。“水晶球”可以让开发者实时地查询到每一通通话的质量情况,包括上下行码率、网络上下行质量、用户行为、用户设备性能与状态等信息。我们将这些数据信息全部进行了可视化处理,能让开发者一眼看出问题所在。至于如何分析?一会通过实际案例告诉你。

可能你会想问,是否能提供比如丢包、抖动等更多的数据。其实目前,已经可以通过“水晶球”看到通话的丢包情况,而抖动以及更多数据指标,还会在之后的版本中陆续提供给开发者们。

这里的实时性到底是意味着多久呢?由于涉及到大量数据的收集与前期处理,目前水晶球可以查询到 2 分钟之前的通话数据,可以满足大部分开发者对质量查询及时性的要求。当然,仍然有不少开发者会希望能更快地发现和分析质量问题,所以我还会不断地对这“2分钟的时间差”进行优化。另外,目前开发者还可以回溯近 3 天内的通话质量详情。

实例解析:通话质量问题

在“水晶球”页面中,横轴以上显示视频接收码率,横轴以下则是音频接收码率。

当你发现一个通话中出现异常曲线(如下图中红色曲线)时,可以点击“查看详情”,当鼠标悬停在用户 ID 上时,该 ID 对应曲线会显示为高亮状态。点击有 ID 就可以进入 E2E(End to End)页面进一步查看端到端数据,分析原因。

在下图这段通话中,我们可以看到右侧接收端用户的视频出现卡顿,有明显的红色虚线。

在进入 E2E 页面之后,你会发现发送端用户(左侧)视频上行码率较低,且网络丢包较多,这说明发送端的网络较差。再对比查看出现丢包时接收端的下行码率,同样出现了卡顿。那么我们得出结论:接收端的视频卡顿是由于发送端网络问题导致的。

再举一个例子。在下面这一通话中,后半段通话图表中突然出现了较多的红色毛刺,说明出现了视频卡顿。

进入 E2E 页面查看具体通话数据。在发送端这一侧,所有数据显示正常,但是右侧接收端的下行网络出现较多的丢包,而且视频卡顿与网络丢包的时间点一致,所以可以判断是接收端自身网络问题导致了他的视频卡顿。

当然,有些时候,视频、音频的质量问题,不一定就是因为网络问题产生的。也可能因为硬件设备性能太差导致的,比如下图中的通话就是如此。

实时通信质量监控与分析工具的数据挑战

要做到这种质量透明有很多技术挑战,我们总结后有如下几点:

第一是数据的收集。我们的通话分布在全球各个地方,运行时的指标需要从各地用户的设备上去收集。我们骨干传输网络覆盖了全球超过200个国家和地区,我们也需要从这些节点去收集终端用户的网络状态信息。目前我们现在可以实现99.9%的传输成功率,基本上全球用户的通话状态数据都能够很好地收集上来。也就是说,除了做到本身的实时传输工作之外,必须还有一套全球的可靠的数据收集网络。

第二是数据聚合。我们收集的这些数据比较分散,包含 SDK 在客户终端的使用,通话的网络传输质量信息,还有发送端与接收端的通信质量、设备状态等信息。我们要实现问题的分析诊断,就需要将这些数据放在同一个“上下文”中去看,要将数据关联起来,所以最大的一个挑战就是如何将这么大量级的数据聚合。

第三就是数据规模。我们现在每天要处理2000多亿规模,这些数据涉及平台挑战,不仅要把每天的数据存储下来,还要实时接收下来,并进行及时处理。因为很多用户都是需要在发现问题时就进行调查。

第四是实时数据检索。除了运行指标,还有很多通话信息、用户设备型号等信息,我们需要让开发者能通过这些信息能够快速检索,来检测出现问题的是哪一通通话,从而解决用户的质量问题。

水晶球的意义就在于为应用开发的老司机们提供了一个仪表盘,可以随时准确掌握实时通信中的每一个细节,让整个产品体验更有保障。目前,我们已经推出了这个工具,并希望以后能把更多质量数据和更智能化的质量分析服务充分提供给开发者们。

最后,欢迎访问 Agora.io 体验“水晶球”,或提出更多需求与建议。