HTTP服務的Keep-Alive設定問題

來源:互聯網
上載者:User

和apache一樣,很多http服務都提供了Keep-Alive功能,如nginx配置中的keepalive_timeout。

至於什麼是Keep-Alive,簡單的說:

Keep-Alive會在server上保持client過來所建立的連結,當client下一次再連到這台server時,不需要重建立立連結,而繼續使用之前的連結。

具體這裡不再介紹,可自行google。這裡直接說一下Keep-Alive該如何設定的問題。

因為它會保持開啟的連結,所以適用於同一client短時間內需要反覆連結的web情況,例如:

  1. 開啟一個頁面時,該頁面連結了n個圖片或n個js指令碼或n個css等,並且這些東西都在一台server上;
  2. 需要使用者頻繁的在網站中轉悠,這點點那點點;
前者可設定timeout時間短一些,例如5秒;後者可以稍長一些,例如60秒。那麼不適用Keep-Alive的情況呢?除了以上情況的相反情況外,對於一些特殊情況也可以off了它。例如高並發情況下。為什嗎?因為太多的client請求過來時,server的連結數是有限的,如果為一部分使用者保持了太多的連結,那麼其他使用者就無法正常連結上。

所以要讓通訊完畢的連結儘快釋放,給其他client騰出資源。

雖然這樣頻繁地建立連結會消耗一定的CPU和記憶體,但是以現在機器的效能,前端伺服器的瓶頸往往不在這塊兒,而在連結數和I/O等。

所以,通常情況下web伺服器你大可不必開啟Keep-Alive,或者設定較低的值。這樣可以充分發揮機器效能,提高並發。除非你的CPU和記憶體比較緊張。

此外,後端server和server之間的通訊如果使用的也是http,那麼此時應該開啟Keep-Alive,你說是麼:)

-----------------------------------------我是分割線----------------------------------------------

擴充閱讀:

http://blog.netzhou.net/?p=141

http://mylinux.5d6d.net/thread-919-1-1.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.