本次微信小程序排查问题的过程中尝试的可能问题如下(安卓系统的手机通过部分4G网络运营商提供的流量访问 https://api.xxx.com 域名下的请求返回时长近60秒):
- 网站备案与https证书的有效性(其中https证书需要包含中间证书,证书安装尽可能完整,证书购买厂商尽量选择国际大厂的,证书协议、加密方式等);
- 域名解析线路(isp)的选择(阿里云域名解析首选默认,其他:中国移动、中国联通、中国电信等多项选择);
- 客户端域名解析DNS的选择(避免运营商Local DNS的不稳定安全可靠而导致的解析问题);
- 参考:阿里云域名解析服务HTTPDNS:https://www.aliyun.com/product/httpdns
- 参考:腾讯云的HTTPDNS服务:https://cloud.tencent.com/product/hd
- 参考:DNSPod的HTTPDNS服务:https://www.dnspod.cn/httpdns/
- 参考:http://www.ttlsa.com/web/httpdns-detailed-service/
- 安卓在4G网络下访问IPV6慢的问题(服务端不添加IPV6的支持,或者客户端优先请求IPV4的服务地址);
- 其他排查过程(查看nginx日志文件access.log、error.log排查网络的问题、请求响应的效率问题;使用浏览器等其他客户端请求服务端资源排查接口问题;小程序客户端控制台工具debug、移动端客户端抓包排查请求是否发出;4G网络热点共享排查设备的问题;新开域名 https://xinghuo.xxx.com 排查域名的问题;只保留最简单的客户端小程序代码调用排查客户端代码的问题)
- 补充:查看 tomcat 日志可用ELK;nginx 查看请求 host 配置(增加 $host 参数):
log_format main '$remote_addr - $remote_user [$time_local] $host "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
安卓微信7.0不能抓包问题(用Package Capture降级抓包即可):https://blog.csdn.net/weixin_34080903/article/details/87994336
总结:
- 安卓系统安装的微信小程序通过部分移动运营商网络可能出现DNS查找缓慢的情况;
- 安卓系统的浏览器不会出现上述问题;
- 苹果系统不会出现上述问题;
- 微信小程序的请求是直接调用我方服务器,referer来自servicewechat域名
当前解决方案:
- 通过更改域名,尝试各网络运营商的DNS解析效果(临时);
- 接入HTTPDNS服务,以获得更稳定迅速安全的DNS查找方式