在 Apache 服務器中,KeepAlive 是一個布爾值,On 代表打開,Off 代表關閉,這個指令在其他眾多的 HTTPD 服務器中都是存在的。 KeepAlive 配置指令決定當處理完用戶發起的 HTTP 請求後是否立即關閉 TCP 連接,如果 KeepAlive 設置為On,那麼用戶完成一次訪問後,不會立即斷開連接,如果還有請求,那麼會繼續在這一次 TCP 連接中完成,而不用重複建立新的 TCP 連接和關閉TCP 連接,可以提高用戶訪問速度。 那麼我們考慮3種情況: 1。用戶瀏覽一個網頁時,除了網頁本身外,還引用了多個 javascript 文件,多個 css 文件,多個圖片文件,並且這些文件都在同一個 HTTP 服務器上。 2。用戶瀏覽一個網頁時,除了網頁本身外,還引用一個 javascript 文件,一個圖片文件。 3。用戶瀏覽的是一個動態網頁,由程序即時生成內容,並且不引用其他內容。 對於上面3中情況,我認為:1 最適合打開 KeepAlive ,2 隨意,3 最適合關閉 KeepAlive 下面我來分析一下原因。 在 Apache 中,打開和關閉 KeepAlive 功能,服務器端會有什麼異同呢? 先看看理論分析。 打開 KeepAlive 後,意味著每次用戶完成全部訪問後,都要保持一定時間後才關閉會關閉 TCP 連接,那麼在關閉連接之前,必然會有一個Apache 進程對應於該用戶而不能處理其他用戶,假設 KeepAlive 的超時時間為 10 秒種,服務器每秒處理 50個獨立用戶訪問,那麼系統中 Apache 的總進程數就是 10 * 50 = 500 個,如果一個進程佔用 4M 內存,那麼總共會消耗 2G內存,所以可以看出,在這種配置中,相當消耗內存,但好處是系統只處理了 50次 TCP 的握手和關閉操作。 如果關閉 KeepAlive,如果還是每秒50個用戶訪問,如果用戶每次連續的請求數為3個,那麼 Apache 的總進程數就是 50 * 3= 150 個,如果還是每個進程佔用 4M 內存,那麼總的內存消耗為 600M,這種配置能節省大量內存,但是,系統處理了 150 次 TCP的握手和關閉的操作,因此又會多消耗一些 CPU 資源。 在看看實踐的觀察。 我在一組大量處理動態網頁內 容的...