Facebook竟然搞砸了几十万个iOS应用

2020年5月6日,美国西海岸时间下午 15:30 左右(最早的问题可以追溯到 14:44,因为这是一个滚动升级),所有使用了 Facebook SDK 的应用遭遇大面积崩溃,持续时间达三个多小时。


01


Facebook故障发生后,在一些苹果设备论坛上有多个关于iOS设备上的应用不断出现崩溃的投诉,专门用于监测网络服务健康程度的Downdetector仪表盘上更是出现了罕见的全员故障情景。

 


 图片来自知乎


其中海外版抖音,目前风头正劲的 TikTok,以及大家经常使用的 Spotify,Pinterest 等 App也未能幸免遇难。


来自国外程序员的哭诉

 

很快,Twitter上就有人把矛头明确指向 Facebook:如果你的 App 现在各种闪退,这锅就是 Facebook SDK 的。


GitHub上的多个开发者也将问题归咎于Facebook的SDK,这一功能通常被用于签到和登录。


更奇怪的是,即使用户没有使用包含的Facebook登录选项的功能,仅仅需要应用程序使用过Facebook SDK,就有机会导致App无法打开的情形。


02


为什么Facebook SDK会导致如此大面积的崩溃?


我们先从SDK的功能开始说起。

 

SDK(Software Development Kit,软件开发工具包)是集成在App里的第三方工具包,可以帮助App高效率、低成本地实现地图、支付、统计、社交、广告等一系列功能。


SDK被开发出来是为了减少程序员工作量的。

比如,有公司开发出某种软件的某一功能,把它封装成SDK(比如数据分析SDK就是能够实现数据分析功能的SDK),出售给其他公司做开发用,其他公司如果想要给软件开发出某种功能,但又不想从头开始搞开发,直接付钱省事。

对于来自Facebook 这样大厂的、且开源的、不得不用的SDK,没有人想要拒绝啊!大家也绝没想到Facebook 会出这样的问题。


App开发人员表示,每当用户启动包含该库的应用时,Facebook SDK for iOS就会调用Facebook的服务器。

 

问题在于,SDK要求服务器以某种格式回应,而周三Facebook服务器并未提供这种格式。由于没有适当的回应,Facebook SDK崩溃,使用该SDK的所有应用也随之崩溃。

 

这次带来的App崩溃,对于 TikTok 这种大厂的App,可能只导致短时期内用户体验变差。但是对于一些新开发上市或者正在引流期的小App,带来的影响却是致命的。


03


那Facebook 究竟做了什么修改,导致了此次大崩溃?


我们看下 Github ticket 的分析:

 


这个分析说,因为Facebook 后端工程师做了一个更新,把本来应该传回给客户端的一个字典结构的数据,传成了布尔值:


"restrictive_data_filter_params" = "{"is_health_app":false}"

这里,is_health_app 本来应该传一个字典,结果传成了 false。


截止到发稿前,官方还未出分析结果,但Facebook在出现问题的 3 个多小时后,在其服务器上发布了一个补丁。


数字化时代,一些网络的突发问题不可避免,拥有快速解决问题的能力比预测问题来的更重要,但是很多时候,App开发者并不能第一时间定位到问题所在。


听云拥有代码级精确追踪的应用性能监控能力,可以从应用性能监控评估、代码级问题快速定位分析、真实用户体验及时告警等方便来提升用户感知管理和系统性能管理,并做到故障恢复趋势可视化。


听云可以通对过系统的响应时间、用户性能值、错误率等指标,用系统进行可视化健康度评分。作为国内领先的应用性能保障专家,听云可以帮助企业更好地提高运营效率。


    本文作者:138****0312 责任编辑:马亚蒙 本文来源:牛透社
声明:本文由入驻牛透社的作者撰写,观点仅代表作者本人,绝不代表牛透社赞同其观点或证实其描述。
  • 138****0312
    138****0312
    未认证
  • 61篇

    文章总数

    24.47万

    文章总浏览数

意见反馈
返回顶部