HTTP的KeepAlive是開啟還是關閉?

csdn發表於2014-08-14

  1、KeepAlive的概念與優勢

  HTTP的KeepAlive就是瀏覽器和服務端之間保持長連線,這個連線是可以複用的。當客戶端傳送一次請求,收到相應內容後,這個連線會保持一段時間,在該時間內的第二次就不需要再重新建立連線,就可以直接使用這次的連線來傳送請求了,極大的提高了速度。

  2、KeepAlive的劣勢

  是不是所有網站都應該開啟KeepAlive了?答案肯定是不是的。KeepAlive在增加訪問效率的同時,也會增加伺服器的壓力。

  3、apache配置KeepAlive

  apache通過配置KeepAlive和KeepAliveTimeout來控制KeepAlive,具體引數如下:

  KeepAlive  On/Off            (可以設定開啟On或者是關閉Off)

  KeepAliveTimeout  10    (持久連線保持的時間,到時間會斷開連結)

  4、案例說明(來源網際網路):

  假設 KeepAlive 的超時時間為 10 秒種,伺服器每秒處理 50 個獨立使用者訪問,那麼系統中Apache的總程式數就是 10 * 50 = 500 個,如果一個程式佔用 4M 記憶體,那麼總共會消耗2G記憶體,所以可以看出,在這種配置中,相當消耗記憶體,但好處是系統只處理了 50次 TCP 的握手和關閉操作。

  如果關閉 KeepAlive,如果還是每秒50個使用者訪問,如果使用者每次連續的請求數為3個,那麼 Apache 的總程式數就是 50 * 3 = 150 個,如果還是每個程式佔用 4M 記憶體,那麼總的記憶體消耗為600M,這種配置能節省大量記憶體,但是,系統處理了 150 次 TCP 的握手和關閉的操作,因此又會多消耗一些 CPU 資源。

  5、總結

  (1)如果記憶體和CPU都足夠,開啟和關閉KeepAlive對效能影響不大。

  (2)如果考慮伺服器壓力,如果是靜態頁面,大量的呼叫js或者圖片的話,建議開啟KeepAlive;如果是動態網頁,建議關閉KeepAlive。

相關文章