Q:网站的最大并发连接数
A:最近我们网站常常报503错误:“HTTP Error 503. The service is unavailable”。但刷一两下又正常。估计很可能是超过网站的最大并发连接数了。
究竟什么是http连接?一张页面加载过程中,又是图片又是样式、脚本,对于这些东西的请求,是共用一个连接还是多个连接?
网上有人说,为了节省连接数,应该尽量将外部CSS,js合并,或者内联;甚至图片也合成一张,再用CSS定位。显然,在这里,一个请求就用一个连接,请求完成连接即被关掉。
但IIS里,有选项“保持HTTP连接”,且有超时时间可供设置。如果每请求一样东西,就开启一个连接,并且这个连接迟迟不死,保持激活,那么要多少连接才够用?这里的意思,应该是一个连接可以供多次使用。
究竟哪个才对?其实都对。
http协议无状态,无连接。无连接的含义就是限制每次连接只处理一个请求,收到应答后即断开。但据说这个是http1.0。
http1.1里,提出了持久连接(persistentconnection)的概念,也就是说同一条 HTTP连接,可以依次处理多个请求。据说目前大多数浏览器都支持这个。想想也有道理,建立一个http连接,消耗的成本是很高的,类似数据库连接,所以 我们都尽量在一个数据库连接里完成所有的操作,正如你到超市里买东西,不可能去一趟只买一样,不然的话,买齐所有东西天都黑了。
不过,即使有持久连接的概念,还是有点疑惑:同一张页面真的只用一个连接吗?假如有些东西特别大,比如图片,其他元素等不及了怎么办?会不会另外开辟一个连接?http超时时间如果都设20分钟,未免太浪费了吧?
另外,就算同一张页面只用一个连接,将css、js、图片合并,也有意义。因为数量少了,发送的请求也少了,这个对性能应该也有影响。