记录一个微信白屏的故障排查

记录一个微信白屏的故障排查

前几天,运维小伙伴晚上突然打电话给我,说公司的一个重要下单的微信页面白屏了,打不开了,让我赶紧看下。

当我打开手机,打开链接之后,发现页面是可以正常访问的,得到的反馈是,页面白了15分钟左右,下单量下降了一半以上。

于是就开始着手排查白页面的原因,由于当时没有抓包保留现场,只能通过大家的描述来推测原因。

根据我以往的经验的分析,一般白屏幕的原因有两种:

1、后端应用服务器,返回空字符串,没有任何html代码,导致白屏

2、微信页面采用backbone.js前端渲染技术,关键的js脚本之行出错

根据原因1,我们查看了大量的nginx访问日志,bytes_sent这一项都是正常的,没有很小的响应,同时应用程序端也没有异常的日志,nginx负载层也没有

这个时候,业务同事的一张白屏截图验证了我们的想法,白屏截图顶部有”下单页面”四个字,那就表示html里的title被已经被微信浏览器正常解析了,所以后端应用是正常的响应的,并没有返回空字符串。

于是,我们就开始原因2的追查,我们看到页面加载的backbone.js走的是一家商用的CDN厂商,看了后台的报表数据,发现那天晚上回源的流量突然下降了,于是和CDN厂商沟通,得到的答复是,那天晚上节点被恶意流量攻击,导致部分节点出现问题,时间点上是和我们的故障事件吻合的。

至此,一个白屏故障的后期追查水落石出了,虽然是很简单的一个问题,但是也耗费了我们数小时的精力。

由此得到一个教训,事故的第一现场的保留,能给后期排查提供非常重要的线索。