记录一次排查微信公众号页面打开缓慢问题的排查过程
1、问题描述
最近微信公众号偶尔有用户反映点击菜单和推送消息进公众号时,页面空白好长一段时间才打开,甚至有的用户一直无法打开页面。
2、问题分析及排查
1、怀疑前端静态资源加载缓慢,通过各个网络测试,发现静态资源的下载都很快,说明不是静态资源加载缓慢问题;
2、怀疑后端接口响应缓慢,实际查看后端接口从接收请求到响应都是毫秒级别,但是前段点击之后会等一段时间(10-100秒左右),后端才接收到请求数据,说明后端接口本身的速度没问题,问题出在前端没有再用户点击之后立即发起对后端接口的访问。
3、找到响应缓慢的手机,进行抓包:
如图,可以发现在每一次请求后端接口的时候,都会发现有请求letsencrypt.org,因为团队使用的lets encrypt的免费SSL证书,应该是HTTPS协议在做SSL证书有效性校验超时,导致页面空白。
4、测试Let's Encrypt OSCP的域名
发现域名解析到的IP无法访问,说明是Let‘s Encrypt的域名被污染了,至此,问题查明白了。
3、处理方案
1、通过OCSP装订(OCSP Stapling),使客户端不需要请求证书供应商查询有效性,但是服务器还是需要请求制作证书,可能因为域名污染问题,无法制作证书;
2、通过修改本地DNS或者hosts,指定到正确IP,但是服务器可以做,但是客户端无法操作;
3、通过分析国内外局势,不排除是长城为之,所以一味绕道不是办法,遂选择了国内的免费SSL证书供应商-阿里,而且阿里的证书有效期为1年,确实也能减少证书维护的成本。
以上排查及解决方案供大家产考,有解释说明有误之处,还望指教。