最近遇到一个问题,chrome 打开网页出现 ERR_INSUFFICIENT_RESOURCES 提示。此时只要重启chrome 就可以了,但是过段时间又会出现这种情况。网上查找了一些资料得出的结论是造成这个问题的方式有很多种,但归根结底是 这些 方式最终都造成 chrome 资源不够了无法响应新的动作。
既然造成问题的方式很多,那就需要配合项目自身进行问题查找。
经过一段时间的观察发现,每次chrome 在 出现问题前,都会出现一些请求显示pending 状态。
经过进一步查看发现这些 请求其实已经发送给后台且后台在处理请求中。 举个例子,有个查询接口,发送给后台后,后台需要全库搜索,耗时特别长,尤其是同时遇到好几个客户端都要后台去查询的时候。
这些pending的接口一致挂在请求列表,之后再有新请求过来就直接挂掉了,页面就显示ERR_INSUFFICIENT_RESOURCES。
鉴于此,得出一个猜测性的结论,大量pending请求占用浏览器资源,阻塞了后边的请求,以至于出现了ERR_INSUFFICIENT_RESOURCES。支撑这个猜测的还有一个重要原因,前端的接口居然没有 timeout 超时,有些接口在network 里边显示已经挂了1min多了还在等待后台返回,不得不说这个也是烂到家了。
目前接口的timeout超时设置了10s(毕竟有些接口在经过内部网络传输和后台处理要达到30s[烂]),network里边基本不会出现大量长时间处于pending的接口。随后的观察中暂时没有再发生ERR_INSUFFICIENT_RESOURCES的情况。
> 虽然没有再出现问题,但是我们有一个疑问,这样的解决方案是否真的是对症下药,或者说接口pending阻塞是不是真的是造成ERR_INSUFFICIENT_RESOURCES的原因。还是因为设置了超时,减少阻塞后,资源得到释放,降低了问题发生的概率?