浏览器同域名请求的最大并发数限制

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

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

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

1,HTTP客户端一般对同一个服务器的并发连接个数都是有限制的。

实际上,浏览器确实使用并行连接,但它们将并行连接的总数限制为少量(通常为四个)。服务器可以自由地关闭来自特定客户端的过多连接。

2,一些主流浏览器对HTTP 1.1和HTTP 1.0的最大并发连接数目,可以参考如下表格:

浏览器

HTTP / 1.1

HTTP / 1.0

IE 11

6

6

IE 10

6

6

IE 9

10

10

IE 8

6

6

IE 6,7

2

4

火狐

6

6

Safari 3,4

4

4

Chrome 4+

6

6

歌剧9.63,10.00alpha

4

4

Opera 10.51+

8

iPhone 2

4

iPhone 3

6

iPhone 4

4

iphone 5

6

Android2-4

4

3,Firefox 浏览器的最大并发连接数

在Firefox中的地址栏输入“about:config中”,然后搜索并修改如下两个配置项目即可:

network.http.max持久的连接 - 每个服务器

network.http.max持久的连接 - 每个代理

网络。HTTP。最大的连接:设置的Http同时连接的最大数量

network.http.max持久的连接,每台服务器是连接同一个服务器允许的最大持久连接数,默认为6,可以不用更改。

network.http.max持久的连接 - 每个代理每个代理服务器允许的最大持久连接数

公司用户使用代理服务器,但是外面的客户一般不使用代理,火狐的维基推荐的network.http.max持久的连接,每台服务器设置为:<= 10。

4,IE 浏览器的最大并发连接数

用“注册表编辑器”命令打开注册表编辑器,找到:

[HKEY_CURRRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings],可以看到MaxConnectionsPerServerMaxConnectionsPer1_0Server

这两个键(分别是针对HTTP 1.1和HTTP 1.0的设置)

对于IE 9

[HKEY_CURRRENT_USER \ Software \ Policies \ Microsoft \ Internet Exploer \ Main \ FeatureControl,可以看到FEATURE_MAXCONNECTIONSPER1_0SERVERFEATURE_MAXCONNECTIONSPERSERVER

这两个键(分别是针对HTTP 1.1和HTTP 1.0的设置)

************************************************** **************************

5,假定一个浏览器的并发连接请求数为10,通常同一时间内会有多个用户并发访问网站。又考虑到,一个Http连接请求在同一时间只能被一个线程访问。

所以,IHS服务器的httpd.conf里的maxclients(允许建立的总线程数)要能够处理峰值时刻的浏览器连接请求才行。

同时,考虑不是所有的连接请求都会到was server,有的连接只是为了在web服务器上取静态资源,所以,was上的线程池数目(Thread pools :50 )会远小于IHS server上的maxclients值譬如400)。

************************************************** *****************************

6,HTTP 连接请求与线程

HTTP连接是复杂,有状态的对象,所以它必须被妥善管理。一HTTP 连接请求在同一时间只能被一个线程访问。

HttpClient的使用一个叫做的Http连接管理器的特殊实体类来管理的Http连接。Http连接管理器在新建的HTTP连接时,作为工厂类;管理持久的http连接的生命周期;同步持久连接(确保线程安全,即一个HTTP连接同一时间只能被一个线程访问)。所谓线程安全就是避免线程的使用造成的数据不安全,多线程操作数据,造成数据不可预知

如果一个的Http连接被释放或者被它的消费者明确表示要关闭,那么底层的连接就会和它的代理进行分离,并且该连接会被交还给连接管理器。这是,即使服务消费者仍然持有代理的引用,它也不能再执行I / O操作,或者更改的Http连接的状态。

如图7所示,连接池管理器

连接池管理器是个复杂的类,它管理着连接池,可以同时为很多线程提供HTTP连接请求。当请求一个新的连接时,如果连接池有有可用的持久连接,连接管理器就会使用其中的一个,而不是再创建一个新的连接。

当使用了请求连接池管理器后,HttpClient的就可以同时执行多个线程的请求了。

连接池管理器会根据它的配置来分配请求连接。如果连接池中的所有连接都被占用了,那么后续的请求就会被阻塞,直到有连接被释放回连接池中。

8,线程池的原理

线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:

线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中。这些线程都是处于睡眠状态,即均未启动,不消耗CPU,而只是占用较小的内存空间。当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。

线程池能节约大量的的系统资源,使得更多的CPU时间和内存用来处理实际的商业应用,而不是频繁的线程创建与销毁

每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大。

在什么情况下使用线程池:
1.单个任务处理的时间比较短
2.将需处理的任务的数量大

9,数据库连接池

数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请,使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 
连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量,使用情况等。

1)最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费; 
2)最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。

10,WebSphere Application Server性能

http://websphere.sys-con.com/node/46514/print

构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。

在面向对象的编程中,创建和销毁对象是很浪费资源的,因为创建一个对象要获取内存资源或者其它更多资源。在Java的中更是如此,虚拟机试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以,提高程序效率的一个手段就是尽可能减少创建和销毁对象的次数。利用已有的对象来服务就是“池化资源”技术产生的原因。

图1显示了一个需要后端处理的应用程序请求流程,并说明了在处理用户请求时线程池之间的关系。 

HTTP侦听器
HTTP侦听器负责在HTTP服务器级别创建线程。这里发生的大多数处理是静态页面服务,或HTTP post / GET传递命令到后端。这是必须考虑的第一级线程配置。

Web容器
Web容器负责在应用程序服务器级别创建线程池。此级别的大多数处理包括servlet,JSP,EJB,动态页面创建和后端传递处理。Web容器是必须配置的第二级线程池配置。

ORB容器 ORB容器负责在对象级创建线程池。这里发生的大部分处理包括处理基于非Web的客户端。ORB容器是必须配置的线程池配置的第三级。

数据源
数据源级负责创建从数据库或“传统”系统访问的连接线程。这些线程是必须解决的第四级配置

实际情况(china):

很多客户端软件可以修改电脑的最大连接数,比如:迅雷、暴风影音等。

之前我们曾跟大家分享过如何修改IE浏览器的并发连接数,如果你正在使用IE7及以下的更低版本,不妨尝试将连接数修改到6,这将有助于提升打开网站的速度。

举个例子:

IE8

和IE6完全不同的瀑布图,其特点有:

  • 最大并发HTTP连接数为6个。
  • javascript文件已经不会阻塞其他资源的加载,甚至多个javascript文件可以一起加载,并且会保证执行的顺序。
  • 会分析HTML结构,优先下载script和link标签定义的外部资源。

Firefox3.6

和IE8的几乎完全一样:

  • 最大并发HTTP连接数为6个(可在about:config中修改)。
  • javascript文件不会阻塞其他资源的加载,多个javascript文件可以一起加载。
  • 会分析HTML结构,优先下载script和link标签定义的外部资源。

Firefox4 beta12

不知是因为设计理念上的不同,还是因为beta版未照顾到这一块,Firefox4反而退化了,和Firefox3.6的区别主要体现在对资源类型的处理上,Firefox4不再严格地优先下载script和link标签定义的外部资源,而是按照HTML结构中出现的顺序来进行加载。

Chrome8

Chrome自带的工具不能很清楚地表示各请求的开始时间,所以使用了Fiddler的瀑布图,从图上可以看出,Chrome也是比较特立独行的一位,其特点有:

  • 最大并发HTTP连接数为6。
  • head部分的资源会单独下载,且阻塞body中的其他资源的加载。
  • 会优先加载script和link标签定义的资源。

Opera11

先报怨一下,Dragonfly不怎么好用来着……Opera的资源加载也比较有特色,而且很难看出规律,只能大致总结一下:

  • Opera的最大并发HTTP连接数默认为16,可在opera:config - Performance - Max Connections Server查看和修改。
  • javascript文件的加载会阻塞其他script和link标签定义的外部资源的加载,如图中的2.js。但不会阻塞图片等其他资源的加载,如图中的3.js。
  • 会一定程度上对资源的优先级进行优化,但由于javascript文件要阻止后续部分资源的加载,又为了充分利用最大HTTP连接数,因此不能严格先加载所有的script和link标签定义的资源,导致瀑布图上各类型资源有相互穿插,难寻规律。

这还是在比较乐观的情况下,有几秒加载完毕的,按道理来说,图片都不大,应该都在1秒范围内就才是在接收范围内。当然和用户自身的带宽也有关系,但是从我的观察来看,是分批加载的。

于是乎我查看资料,发现。

从Yahoo关于网站优化的经典14条建议,在V2版中,已经更新到35条了,其中有需要减少请求连接数和减少DNS解析次数,由于在http协议中有对浏览器并发请求连接数的限制,1.1版本中规定了是2个(相关资料可以查看文章的结尾),于是通常的优化网站加载速度的方法是采用多个域名增加浏览器对同一网页的请求并发连接数。

二、下面我来看看各大电商是怎么处理的。

1.京东(www.jd.com)

    京东图片域名一直是老域名360buyimg.com。

    http://img13.360buyimg.com/da/jfs/t1879/131/2924301202/126044/7c7cbf5c/56f3b58fN37c1340a.jpg

    比如说这张图片,你可以复制打开这个链接,把前面的二级域名的Img13换成img11、img12、img13等,发现都是可以打开的,而且一般是同一IP,有的同学说换成img8、img1、img2等打不开,这个是策略问题。这只是举个栗子。

2.天猫(www.tmall.com)

    图片CDN域名有很多,tbcdn.cn、alicdn.com 等

    也是同理,不过最近HTTPS转变后都换成img.alicdn.com了。原因不明。

三、说一下Firefox浏览器

Firefox地址栏中输入:about:config

在搜索项输入:network.http.max-connections

老版本值是30,我这个版本是256,说明有改进。

我们再输入:network.http.max-persistent-connections-per-server进行搜索,发现是6。

你可以写个Demo测试一下,写个小循环,然后访问同一个域名(推荐用 Ajax  方式),然后后台sleep一会,你就能看出效果。之前有人做过低版本的测试,得出结论。

IE8的并发连接数限制为10;

Firefox    和 chrome  的并发连接数都为6,可能各个版本有区别。作为一个站长,或者说一个完善的产品,这个是不得不考虑的。

解决方案:

1.给定一组域名,如:img1.baidu.com、img2.baidu.com、img3.baidu.com、img4.baidu.com... ... 

2.这组域名指向同一个源,或者说最终源是一个。

3.上传图片(静态文件)的时候随机返回这组域名中的其中一个即可,这样图片的访问域名就不会出现只是一个域名了。

转自:浏览器同域名请求的最大并发数限制 - 漫思 - 博客园

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38177.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postman点击一次连续发送多个请求

使用场景&#xff1a;postman有两个请求&#xff0c;每次调其他业务接口时都需要先执行这两个&#xff0c;我嫌太麻烦了得一个个点&#xff0c;怎么整&#xff1f; 这是准备操作的两个请求&#xff1a; 点击这个按钮&#xff0c;打开界面如下两个图 点击左下角的RUN即可看到你…

CHROME浏览器发送HTTP最大请求并发数限制

一、先上结论&#xff1a; ①同一域名下&#xff0c;同一GET请求的并发数是1&#xff0c;也就是说上一个请求结束&#xff0c;才会执行下一个请求&#xff0c;否则置入队列等待发送&#xff1b; ②同一域名下&#xff0c;不同GET/POST请求的并发数量是6。当发送的请求数量达到…

.net Core中如何限制接口请求次数

.net core中如何限制接口请求次数 像AspNetCoreRateLimit这种轮子我前面有给大家介绍过&#xff0c;今天就不说了&#xff0c;我们来聊聊背后的原理&#xff0c;欢迎各位大佬指正&#xff01; 像我们经常看的一些APi请求接口网站&#xff1a; 拿请求国外主要城市的七日接口举例…

后台限制请求访问次数的实现

目录 背景 ExpiringMap 限制请求次数应用示例 pom依赖 注解类定义 切面定义 Controler示例 示例展现情况 背景 最近搞接口服务器&#xff0c;对兄弟团队提供数据接口&#xff0c;由于对接生产数据&#xff0c;担心小伙伴把我的数据库玩死&#xff0c;于是想着搞个请求限…

chatgpt赋能python:Python怎么AI绘画

Python怎么AI绘画 随着人工智能和机器学习技术的不断发展&#xff0c;Python成为了其中最常用的语言之一。人工智能已经满足了许多人的兴趣&#xff0c;并已经成为一个行业。其中&#xff0c;AI绘画是大家热衷的领域之一。 介绍 AI绘画是一种利用人工智能和机器学习方法创造…

GPT-4开源平替miniGPT-4来了,仅需23G显存单机可run,附论文、项目代码地址

来源 | 新智元 微信号&#xff1a;AI-era 先是ChatGPT的发布给世界带来了一点小小的NLP震撼&#xff0c;随后发布的GPT-4更是破圈计算机视觉&#xff0c;展现了非凡的多模态能力。 不光能读懂人类的梗&#xff0c;给个手绘草图甚至可以直接写出网站的代码&#xff0c;彻底颠覆…

3天近一万Star!MiniGPT-4来了!看图聊天,不在话下!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉】微信技术交流群 转载自&#xff1a;机器之心 GPT-4 已经发布一个多月了&#xff0c;但识图功能还是体验不了。来自阿卜杜拉国王科技大学的研究者推出了类似产品…

【全网首发】万字长文全面了解 GPT-4

北京时间今天凌晨1点&#xff0c;openai发布了全网期待已久的GPT-4。 GPT-4的看点都有哪些呢&#xff1f; 逻辑推理&#xff0c;强到可以代替你考律师啦角色扮演&#xff0c;cosplay认定角色不轻易被忽悠多模态&#xff0c;可以看到图片啦 &#xff08;图片功能暂时不对外&…

浅析多模态机器学习

GPT-4的发布给ChatGPT带来了又一次飞跃&#xff0c;ChatGPT不仅支持文字输入&#xff0c;还能看得懂图片、甚至是漫画、梗图&#xff0c;以GPT-4为代表的多模态大模型非常强大。多模态大模型就是指模型可以处理多种结构/类型的数据&#xff0c;例如GPT-4&#xff0c;它既可以处…

GPT-4发布!

GPT-4更能理解“抽象”ChatGPT怎么用&#xff1f;继续往下看 在网上&#xff0c;不少网友对此次ChatGPT的迭代表现的既兴奋又担忧。GPT-4增强了高级推理和处理复杂指令方面的能力&#xff0c;另外&#xff0c;它还具有更多的创造力。OpenAI给出了几个使用范例&#xff0c;如说明…

OpenAI GPT-4震撼发布:多模态大模型

OpenAI GPT-4震撼发布&#xff1a;多模态大模型 发布要点GPT4的新功能GPT-4:我能玩梗图GPT4:理解图片GPT4:识别与解析图片内容怎样面对GPT4 申请 GPT-4 API 前言&#xff1a; &#x1f3e0;个人主页&#xff1a;以山河作礼。 &#x1f4dd;​&#x1f4dd;:本文章是帮助大家更加…

1.自动标注工具:CVAT---介绍

1.自动标注工具&#xff1a;CVAT—介绍 简介&#xff1a;CVAT是用于计算机视觉的免费&#xff0c;在线&#xff0c;交互式视频和图像注释工具。可以用于模型训练数据的标注。在线测试网站 这里是在线测试网站 文章目录 1.自动标注工具&#xff1a;CVAT---介绍前言一、效果二、…

标注2.0:数据标注员如何进行从业选择?

作为一个2020年3月份才正式正名的一个岗位&#xff0c;开始就受到了很多关注&#xff0c;但也引发了很多争议。经过几年的发展人工智能很多领域已经落地初见成效&#xff0c;数据标注也逐渐要进入一个“洗牌期”。但很少有人关注从业者的发展&#xff0c;不管是在百度还是知乎去…

Tina_Linux_syslog_使用指南

Tina Linux syslog 使用指南 1 基本介绍 syslog 可以说是一套统一管理系统日志的机制&#xff0c;尤其常用于记录守护进程的输出信息上。因为守护进程不存在控制终端&#xff0c;它的打印不能简单地直接输出到stdin 或 stderr。 使用syslog 时&#xff0c;一般需要关注两部…

Linux外壳程序编程 shell编程 引号详解

shell是命令语言、命令解释程序及程序设计语言的统称&#xff1b; shell是一个命令语言解释器&#xff0c;它拥有自己内建的shell命令&#xff1b; Shell&#xff08;Bash&#xff09;单引号、双引号和反引号用法详解; 尽量使用 $(命令) 的方式来引用命令的输出&#xff0c;…

【OS命令注入】常见OS命令执行函数以及OS命令注入利用实例以及靶场实验—基于DVWA靶场

目录 1 OS命令注入概述2 常见OS命令注入函数及例子2.1 system()函数2.2 exec()函数2.3 shell_exec()函数2.4 passthru()函数2.5 popen()函数2.6 反引号结构 3 OS命令注入漏洞的利用3.1 查看系统文件3.2 显示当前路径3.3 写文件 4 OS命令注入漏洞的防御5 OS命令注入漏洞靶场实验…

Linux —— tftp 使用

提示&#xff1a;tftp 命令在 uBoot 系统和 Linux 系统下的使用是不一样的 前言 在 Linux 移植过程或裸机开发中&#xff0c;经常要使用到 tftp 命令&#xff0c;本文围绕该命令相关的网络配置及使用做出记录&#xff0c;本文中&#xff0c;开发电脑命名为上位机&#xff0c;新…

linux 之TFTP的使用

简介 TFTP是用来下载远程文件的最简单网络协议&#xff0c;它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面&#xff1a;一是linux服务器端的tftp-server支持&#xff0c;二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client&#xff0c;所以…

嵌入式linux与windows之间的tftp文件传输(保姆级)

目录 前言一、为什么要文件传输二、利用共享文件夹(简要流程)三、tftp传输与环境搭建四、传输前的准备工作五、测试准备工作是否完成六、传输文件6.1、windows中tftp32的配置6.2、嵌入式Linux(板子)中获取或发送文件6.2.1、tftp命令用法 前言 在我们接触嵌入式Linux之前&#…

用于医疗领域的聊天机器人ChatDoctor

ChatGPT系列文章 文章目录 ChatGPT系列文章ChatDoctor数据集模型训练参考资料 ChatDoctor ChatDoctor: A Medical Chat Model Fine-tuned on LLaMA Model using Medical Domain Knowledge 论文地址&#xff1a;https://arxiv.org/pdf/2303.14070.pdf 在通用领域中的大型语言…