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

IE和Firefox对同一域名进行请求的并发连接数限制

http://www.iefans.net/qingqiu-bingfa-lianjieshu-xianzhi/

-------------------------------------------------------------------------------------------------

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

In practice, browsers do use parallel connections, but they limit the total number of parallel connections to a small number (often four). Servers are free to close excessive connections from a particular client.

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


Browser


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


Firefox


6


6


Safari 3,4


4


4


Chrome 4+


6


6


Opera   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-persistent-connections-per-server

network.http.max-persistent-connections-per-proxy

network. http. max-connections:设置Http同时连接的最大数量

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

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

公司用户使用代理服务器,但是外面的客户一般不使用代理,Firefox的Wiki推荐的network.http.max-persistent-connections-per-server设置为:<=10。

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

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

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

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

For 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 server的 httpd.conf里的maxclients(允许建立的总线程数)要能够处理峰值时刻的浏览器连接请求才行。

同时,考虑不是所有的连接请求都会到was server,有的连接只是为了在web server上取静态资源,所以,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 Performance

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

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

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

Figure 1 displays an application request flow that requires back-end processing and illustrates the relationship among the thread pools as the user request is processed.

HTTP Listener
The HTTP Listener is responsible for thread creation at the HTTP server level. Most of the processing that occurs here is static page serving, or HTTP post/GET pass commands to the back end. This is the first level of thread configuration that must be considered.

Web Container
The Web container is responsible for thread pool creation at the application server level. Most of the processing at this level includes servlet, JSP, EJB, dynamic page creation, and back-end pass-through processing. The Web container is the second level of thread pool configuration that must be configured.

ORB Container The ORB container is responsible for thread pool creation at the object level. Most of the processing that occurs here includes the processing of non-Web?based clients. The ORB container is the third level of the thread pool configuration that must be configured.

Data Source
The data source level is responsible for creating the connection threads that are accessed from the database or "legacy" systems. These threads are the fourth level of configuration that must be addressed

时间: 2024-08-06 07:58:47

浏览器对同一域名进行请求的最大并发连接数(转贴)的相关文章

“不同浏览器对于同一域名的并发获取(加载)资源数是有限的”

转自:http://www.nowamagic.net/librarys/veda/detail/1077 这个总结来源于一次优化的请求,最初某个页面的加载十分缓慢,load事件迟迟无法触发,因此希望可以通过对静态文件分域名等方式对页面的外部资源进行优化,拿得load事件尽可能早地触发.于是我查看了页面的源码,并对外部资源进行了整理,基于下面2个理念画出了一个推测的瀑布图: 浏览器对同一个域只能并发2个HTTP请求 - 网上盛传已久. javascript文件的加载会阻塞浏览器其他资源的加载 -

Chrome浏览器不支持本地Ajax请求的解决方案

问题描述: 通过Ajax获取本地JSON文件时候,报Received an invalid response. Origin 'null' is therefore not allowed access. 错误. 原因: Chrome浏览器不支持本地Ajax请求,当在html文件中使用Ajax时候,就报错. 解决方案: 右击chrome浏览器快捷方式图标,选择属性,在目标中添加:--allow-file-access-from-files,与chrome.exe之前有个空格.

[转] 静态资源的分布对网站加载速度的影响/浏览器对同一域名下并发加载资源数量

静态资源的分布对网站加载速度的影响 / 浏览器对同一域名下并发加载资源数量 / browsers network-http-persistent-max-connections-per-server 引文:浏览器在同一个域名下并发加载的资源数量是有限的,访问淘宝首页需要加载126个资源,那么如此小的并发连接数自然会加载很久,所以前端开发人员往往会将上述这些资源文件分布在多个域名下,变相的绕过浏览器的这个限制,同时也为下文的CDN工作做准备 [ 摘自:<淘宝技术这十年>P6-P7 ] 不同浏览器

巨坑:浏览器在短时间内对于同一个请求的处理,会先等待上一个请求完成后,再处理下一个请求,导致在测试异步时误导代码有问题。

例子: tornado后端异步处理(模拟异步处理20秒) 浏览器请求接口:http://192.168.1.98:1104/test 然后又打开一个table,请求同一个接口:http://192.168.1.98:1104/test: (这时,第二个请求就是到不了后端,一定要等第一个请求处理结束了才能到后端.) 那么,浏览器会等到第一个请求完成后,再对第二个请求做处理: 所以,最好每次加上一个不同的参数http://192.168.1.98:1104/test?count=123,让浏览器认为

02 详解主流浏览器多个外部JS请求和执行机制

在IE8.Firefox3.6之前页面加载外部的javascript文件(IE6和IE7会连同图片,样式资源和页面渲染一同阻塞)是阻塞式的,而在之后的版本中,浏览器都使用了瀑布式加载,这样页面的打开及渲染速度都会变快,请注意,我提到的瀑布式加载,仅仅指的是加载,而非JS的执行,在主流浏览器中JS的执行总是阻塞的.用简单一点的语言描述,就是同一时间,页面只会加载一个js文件.在第一个js文件加载并执行完之前,第二个要引入的js不会下载和执行.而页面中js的引入顺序以请求的顺序为定. 我们来看一个在

如何解决chrome 等浏览器不支持本地ajax请求的问题

XMLHttpRequest cannot load file:///D:/WWW/angularlx/ui-router-test/template/content.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. 上述是chrome控制台报错信息,信息的意思很明显

记录:mac的浏览器访问任何域名、网址都跳转到本地127.0.0.1或固定网址

新年上班第一天,刚开机就遇到了个小坑,问题是这样,打开浏览器,输入任何网址都跳转到本地的一个项目,该项目在本地Apache配置下,监听的端口是8888,本机访问的形式是127.0.0.1:8888. 问题截图(访问360搜索跳转到本地127.0.0.1:8888,访问百度等https协议的域名报错) 问题排查:在chrome浏览器地址栏中输入chrome://net-internals/#proxy,发现是系统修改了浏览器的http代理,截图如下. 解决方案有两种途径: 1.打开Safari浏览

IE浏览器同过get\delete请求时,获取不到数据或者获取数据有误

地址:https://blog.csdn.net/weixin_34417814/article/details/93327578 在ie浏览器用get方式获取数据时因为发送得到参数地址都是一样的,所以浏览器会优先从缓存获取数据,而不去服务器请求数据,post由于参数不同所以不会影响. 解决方法: 1.  Internet选项--浏览历史记录--设置-- Internet 临时文件的选项改为每次访问网页时也可以 2. 在ajax请求的页面后加随机数 例:URL=“t=”+Math.random(

浏览器一直不停的异步请求(环境:vs.net mvc)

图中数据为firebug控制台输出内容,由此可知是 一个叫browserLink的东西,每6秒左右自动请求一次.这个东西来自vs新的开发环境: 调整此开关即可. 好囧的问题,居然不是那么容易被搜到...