詳解http_keepalive

1. http keepalive

http早期 ,每一個http請求都要求打開一個tpc socket鏈接,而且使用一次以後就斷開這個tcp鏈接。nginx

使用keep-alive能夠改善這種狀態,即在一次TCP鏈接中能夠持續發送多份數據而不會 斷開鏈接。經過使用keep-alive機制,能夠減小tcp鏈接創建次數,也意味着能夠減小TIME_WAIT狀態鏈接,以此提升性能和提升httpd 服務器的吞吐率(更少的tcp鏈接意味着更少的系統內核調用,socket的accept()和close()調用)。可是,keep-alive並非 免費的午飯,長時間的tcp鏈接容易致使系統資源無效佔用。配置不當的keep-alive,有時比重複利用鏈接帶來的損失還更大。因此,正確地設置 keep-alive timeout時間很是重要。web

2. keepalvie timeout

Httpd守護進程,通常都提供了keep-alive timeout時間設置參數。好比nginxkeepalive_timeout,和Apache的KeepAliveTimeout。這個 keepalive_timout時間值意味着:一個http產生的tcp鏈接在傳送完最後一個響應後,還須要hold住 keepalive_timeout秒後,纔開始關閉這個鏈接。當httpd守護進程發送完一個響應後,理應立刻主動關閉相應的tcp鏈接,設置 keepalive_timeout後,httpd守護進程會想說:」再等等吧,看看瀏覽器還有沒有請求過來」,這一等,即是 keepalive_timeout時間。若是守護進程在這個等待的時間裏,一直沒有收到瀏覽發過來http請求,則關閉這個http鏈接。瀏覽器

相關文章
相關標籤/搜索