赞
踩
起因:昨天半夜上了新功能之后, 可能大家都比较活跃, 在测试交互上就发现了今天写下的这个问题。<昨天上的功能是OK的>
复异过程:
测试后半截就随便点点嘛,一般都会看看之前的功能正不正常。然后L哥就发现了一个奇怪的问题,
基本上所有的页面,在反复进出一定次数之后,页面就没数据了。
实质上就是接口就不加载了。
我的第一反应就是微信那边是不是有什么异常
然后开调试看log
如下图:
社区搜了一圈,发现好多问同类报错的,但是看了十几页也没看到什么有价值的内容
就先睡了
第二天到公司打开开发者工具 真机模拟了一下异常的复现场景
发现了一个很特别的现象
基本上每次进出页面,在控制台的请求里都会挂起一个pending,然后pending接口超过10个之后,后续的调用就没有了,会等到前面的pending状态改变之后才继续执行。
我去看了一下这个接口(这是我们自己埋点系统的接口),妈的智障!
后端不知道几时把这玩意做了内网访问限制。
接口去掉之后异常就没有了 <这是业务上的问题>
其实质是: 每个浏览器内核,对于同一域名下的网络请求都有并发限制。很显然小程序(或者说微信<其实质是QQ浏览器的X5内核>)的并发数量是10
当实际的请求并发到达这个数字之后,后续的请求就会等待执行,即像一个单向队列一样,前面10个排队的有人出去,后面的请求才能进去,出几个进几个。
更详细的浏览器同域名请求的最大并发数限制 - sunsky303 - 博客园 可以看一下这篇文章,说的相当清楚。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。