HTTP的KeepAlive是開啟還是關閉?
<a href="http://www.cnblogs.com/HTTP%E7%9A%84KeepAlive%E6%98%AF%E5%BC%80%E5%90%AF%E8%BF%98%E6%98%AF%E5%85%B3%E9%97%AD%EF%BC%9F" target="_blank">http://itindex.net/detail/50719-http-keepalive</a>
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。