关于请求被挂起页面加载缓慢问题的追查

缘起

有一个Dashboard的页面大约有十几个图表,每一个图表是一个ajax请求。

突然有一天改了页面中间几个图表的查询逻辑,导致ajax请求响应时间比较长。

然后就出现了图表加载出现了顺序等待,后面本来很快就能加载出来的图表也必须等待上面的图表加载一些之后才能加载。

可能的原因

中间的图表加载慢是因为本来就是慢查询,可是为什么后面的图表正常必须等到中间的图表加载一部分之后才能正常加载了?

思考了一下还是先看看network里面每一个请求的具体状态在分析。

随意找了一个请求看了一下

这是请求Pending时的请求信息:

下面是请求成功后查看请求的各种状态和时间:

这一个请求正常,只是响应时间比较长

这个请求的截图是有问题的,发现一个问题就是

可以看到Stalled了1分多钟。神奇的是竟然不报超时错误而是成功返回了。

然后针对这个Stalled我直接去搜了一下,网上说这种情况的原因有好几种,我们先看看别人的思路和解决办法。

 

 

思路:

Stalled(阻塞)

  浏览器对同一个主机域名的并发连接数有限制,因此如果当前的连接数已经超过上限,那么其余请求就会被阻塞,等待新的可用连接;此外脚本也会阻塞其他组件的下载;

  优化措施:

  1、将资源合理分布到多台主机上,可以提高并发数,但是增加并行下载数量也会增大开销,这取决于带宽和CPU速度,过多的并行下载会降低性能;

  2、脚本置于页面底部;

浏览器对同一域名进行请求的最大并发连接数

当我们在浏览网页的时候,对浏览速度有一个重要的影响因素,就是浏览器的并发数量。并发数量简单通俗的讲就是,当浏览器网页的时候同时工作的进行数量。

如果同时只有2个并发连接数数量,那网页打开的时候只能依赖于这2条线程,前面如果有打开慢的内容,就会直接影响到后面的内容打开。但是如果同时有更多的并发连接数,这样就会大大的提高网页加载速度。浏览器的并发连接数也并非越大越好。

下表概括了基于主机上运行的IE浏览器的版本的最大并发连接数、主机的连接速度和服务器的受支持的协议版本。

版本 HTTP 1.0 服务器(宽带连接) HTTP 1.1 服务器(宽带连接) HTTP 1.0 服务器(拨号连接) HTTP 1.1 服务器(拨号连接)

Internet Explorer 7 和早期版本

4

2

4

2

Internet Explorer 8

6

6

4

2

Internet Explorer 9

10

10

?

?

Internet Explorer 10

6

6

?

?

Internet Explorer 11

6

6

?

?

chrome、firefox

6

6

?

?

然后我就去查看我的ajax请求,数了一下,大约是在第6个请求的时候就开始有Stalled时间了。

为了确定是否这个问题,接下来我做了一个实验,就是减少响应时间慢的ajax请求,看看接下来的页面效果。

试验后发现,当有6个响应时间比较长的ajax请求的时候会阻塞到后面的ajax请求执行,少于6个的时候不会阻塞后续的ajax执行。

实验的是chrome浏览器,最大进程数为6,和实验数据吻合。

结论:一

浏览器对同一个主机域名的并发连接数有限制,因此如果当前的连接数已经超过上限,那么其余请求就会被阻塞,等待新的可用连接;此外脚本也会阻塞其他组件的下载;

前端Dashboard页面展示的图表数据最好是提前统计好,然后放到缓存里面,避免统计时间比较长的ajax请求太多阻塞其他请求。

关于请求被挂起页面加载缓慢问题的追查(stalled 时间过长)相关推荐

  1. 关于请求被挂起页面加载缓慢问题的追查

    本文前戏较多,务实的同学可以直接跳到结论. 由「钢的琴」网友脑洞大开延伸出了吉的他二的胡琵的琶,以及后来许嵩的「苏格拉没有底」,是否可以再拓展一下,得到哥本不爱吃哈根,哈根爱达斯等剧情乱入的关系. 上 ...

  2. 记录简单优化系——关于图表请求页面加载缓慢问题的追查(stalled 时间过长)

    问题描述:一个页面中有多个图表,用到的是echarts,angularjs,每一个图表都是一个请求,详细如截图. 发现stalled(阻塞)时间比较长,上网百度可以得到很多解决办法,简单百度查到的如下 ...

  3. 请求被挂起导致页面加载缓慢

    前提提要 系统内存在两个服务器的接口,一个是己方,一个是他方,某一天很多客户反应页面加载缓慢,但是最终会显示,经过排查,发现他方的接口一直处于pending状态,导致我方接口被迫挂起. 奇葩的是,超时 ...

  4. 前端页面加载缓慢的原因和性能优化问题

    前端页面加载缓慢的原因和性能优化问题 一.页面加载缓慢的原因 二.前端性能优化方法 一.页面加载缓慢的原因 当我们打开一个网页,页面加载比较缓慢时,可能原因有以下几点: (1)过多的http请求 (2 ...

  5. 自定义字体包过大,导致页面加载缓慢的问题解决

    // 字体包过大,在渲染页面客户端时加载缓慢,导致页面加载缓慢影响用户体验.需要处理字体包: // 1. 转码,使得不受不同浏览器之间的限制 2.压缩:使得加载更迅速 // 使用中文字体压缩器:fon ...

  6. html5 页面加载缓慢,html5体验优化页面加载的14条建议

    html5体验优化页面加载的14条建议 1. fake 页 - 首屏加速 目标:首屏 3s 以内 因为 71% 的用户期望移动页面跟 pc 页面一样快 (3s) ,74% 的用户能容忍的响应时间为 5 ...

  7. ant design pro 加载慢_ant design pro项目打包后页面加载缓慢

    用ant design pro框架做的项目,打包之后每一个页面加载的速度都特别慢,在.webpackrc里面配置了ignoreMomentLocale: true, disableDynamicImp ...

  8. Python selenium页面加载缓慢,超时解决办法

    最近在编写selenium自动化测试框架,遇到一个烦人的问题, driver.get()不执行完,浏览器页面一直在转圈圈,下面的代码根本就不会执行,耗时一天的时间终于解决了. 原理:driver.ge ...

  9. confluence创建页面加载缓慢_树莓派4B使用docker安装confluence

    说明 confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享.现在大多数公司都会部署一套confluence,用作内部wiki.另 ...

最新文章

  1. 如何判断数据库中的两个表是否相同(相等)?比较数据库中的两个表是否完全相同,包括字段和每条记录
  2. [Pulgin] 利用swfupload实现java文件批量上传
  3. kinect c++
  4. 邻域闭包matlab,闭包 - it610.com
  5. 海量java等互联网相关电子图书分享
  6. 转载:div和flash层级关系问题
  7. 挑战Unity、UE4,曾戈祭出次世代VR引擎
  8. 右键添加新建剪切板文件夹 新建今天日期文件夹
  9. 在flex中显示gif
  10. win11任务栏怎么隐藏 Windows11隐藏任务栏的设置方法
  11. 命令行方式使用FTP
  12. myeclipse 的 restart server和Redeploy/Reload application的区别
  13. mysql数据类型及占用字节数
  14. hosts文件原理及运用
  15. dorado7.x argument type mismatch
  16. 哪里有电,哪里就应该有网络 ,华为移动路由Pro评测
  17. 服务器和网站域名,网站服务器和域名的区别
  18. Python基础07
  19. python四级是什么水平_大学英语四级相当于高考什么水平
  20. Oracle 12c 创建新用户报错 - ORA-65096

热门文章

  1. fpu测试_苹果MacBook Pro 16补充性能测试:更大,更强大
  2. jquery 中加入html代码,jquery实现动态添加html代码
  3. 使用Python实现伪防沉迷工具
  4. 如何在百度地图上画镂空圆 Android
  5. 网络安全-已解密的登录请求,会话标识未更新,跨站点请求伪造
  6. Android 使用AudioRecord录制声音
  7. SIKI学习——坦克大战03
  8. android 空间不足 sd卡,手机sd卡空间不足怎么清理【图文教程】
  9. 如何利用HTML5做游戏营销
  10. mysql服务器的重启命令_命令模式启动/停止/重启MySQL服务器