Q:網(wǎng)站的最大并發(fā)連接數(shù)
A:最近我們網(wǎng)站常常報503錯誤:“HTTP Error 503. The service is unavailable”。但刷一兩下又正常。估計很可能是超過網(wǎng)站的最大并發(fā)連接數(shù)了。
究竟什么是http連接?一張頁面加載過程中,又是圖片又是樣式、腳本,對于這些東西的請求,是共用一個連接還是多個連接?
網(wǎng)上有人說,為了節(jié)省連接數(shù),應(yīng)該盡量將外部CSS,js合并,或者內(nèi)聯(lián);甚至圖片也合成一張,再用CSS定位。顯然,在這里,一個請求就用一個連接,請求完成連接即被關(guān)掉。
但IIS里,有選項“保持HTTP連接”,且有超時時間可供設(shè)置。如果每請求一樣?xùn)|西,就開啟一個連接,并且這個連接遲遲不死,保持激活,那么要多少連接才夠用?這里的意思,應(yīng)該是一個連接可以供多次使用。
究竟哪個才對?其實都對。
http協(xié)議無狀態(tài),無連接。無連接的含義就是限制每次連接只處理一個請求,收到應(yīng)答后即斷開。但據(jù)說這個是http1.0。
http1.1里,提出了持久連接(persistentconnection)的概念,也就是說同一條 HTTP連接,可以依次處理多個請求。據(jù)說目前大多數(shù)瀏覽器都支持這個。想想也有道理,建立一個http連接,消耗的成本是很高的,類似數(shù)據(jù)庫連接,所以 我們都盡量在一個數(shù)據(jù)庫連接里完成所有的操作,正如你到超市里買東西,不可能去一趟只買一樣,不然的話,買齊所有東西天都黑了。
不過,即使有持久連接的概念,還是有點疑惑:同一張頁面真的只用一個連接嗎?假如有些東西特別大,比如圖片,其他元素等不及了怎么辦?會不會另外開辟一個連接?http超時時間如果都設(shè)20分鐘,未免太浪費了吧?
另外,就算同一張頁面只用一個連接,將css、js、圖片合并,也有意義。因為數(shù)量少了,發(fā)送的請求也少了,這個對性能應(yīng)該也有影響。