通过监控发现的TURN中的bug

作者:Philipp Hancke(原文链接

翻译:刘通

 

        最近我花了很多时间在分析数据上。这是我业余时间所进行的项目,这些工作也能帮助我解决bug问题。我从分析数据中得到的收获之一就是发现了最近在Linux上Firefox 47的倒退影响了Firefox如何收集TURN/TCP候选。“Bugzilla”上有包括Mozilla的迅速反应的全部内容。

        有一天晚上我把下面这一段代码粘到了JS控制台中:

catch_bug

        这段代码的功能是生成端到端连接,以及从我们的一个TURN服务器中采集TURN候选项。现在…它在我的Linux机上运行不了。我换了一台Windows系统的电脑,结果它运行的相当好。但是在Linux上,只要是指定IP地址而不是使用主机名,这段代码也能工作。也许只有我会遇到这个问题?

        通过检查我们的平台矩阵,结果发现在Linux上只有很少很少的Firefox通话采集了TURN/TCP候选项。失败率高达将近90%。但是在Windows和OSX系统上,失败率低于5%。很显然这里出了什么状况。因为我们只有比较少的Firefox上的通话量,而且这些Linux用户也需要有TURN/TCP才能通话,所以想要找到问题所在的难度还是挺大的…而且这些用户只是众多使用者的冰山一角,更何况这是一座超级大的冰山。

        这就是我所修复bug,并且提醒IRC的人的地方。在来回来回的bug检测后,结果这是在Firefox 47版本中的倒退现象。事后想来,这原因真的是很明显。感谢称赞一下getstats.io为我提供下面这个图表中的数据:

catch_bug2

        Linux版本的Firefox 46的出错率(图中蓝线所示)是处于比较正常的范围内的。在6月号Firefox 47版本上线以来,我们可以发现Linux上的出错率(橙线)基本是一个接近100%的稳定值。要着重说明的一点是,这并不意味着这些通话都失败了,只是它们没有采集TURN/TCP候选项而已。

        这个问题花了将近两个月的时间才反馈回Mozilla公司,而这问题在图表中是显而易见的。但是一个聪慧的数据科学家(嗨Eric说你呢!)曾经跟我说过:“我不能让你和Gustavo一整天都死盯着这些图表”。

        尽管另一个如何监视WebRTC的例子会提高你们的服务质量。但是在这领域的真正成功是你把bug上报给了浏览器开发公司。

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营