日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Nginx重要概念之keepalive

發布時間:2023/12/13 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 Nginx重要概念之keepalive 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是keepalive?

  keepalive是長連接的意思。客戶端發起http請求前需要先與服務端建立TCP連接,每次TCP連接都需要三次握手來確定,三次交互不僅會增加消費時間,還會增加網絡流量。http請求是請求應答式,如果能知道每個請求頭與響應體的長度,就可以在一個連接上執行多個請求,這個就是所謂的長連接。

如何確定請求頭和響應體的長度?

  1、請求頭長度:如果當前請求有body,Nginx需要客戶端在請求頭中指定content-length來表明body的大小,否則返回400。

  2、響應體長度:在http協議中響應body長度的確定

http1.0:①響應頭中有content-length,content-length即為body長度。客服端依照這個長度接收數據,接收完了就表示請求完成。②響應頭中沒有content-length,客戶端會一直接收數據,知道服務端主動斷開,才表示body接收完了。
http1.1:①chunked傳輸,響應頭中有Transfer-encoding,body為流式輸出,body被分成多個塊,每塊的開始會標識出當前塊的長度,此時body不需要通過長度指定。②非chunked傳輸,響應頭中有content-length則按照content-length來接收數據,沒有content-length,則客戶端接收數據,知道服務器主動斷開。

  除了以上綠色字的情況,響應體長度都是可知的。

是否可使用長連接的條件是什么?

  可知響應體長度的情況下,當服務器輸出完body后可以考慮使用長連接。長連接的條件限制如下

客服端的請求頭中的connection為close,則客戶端要求不使用長連接。
客戶端的請求頭中的connection為keep-alive,則客戶端要求使用長連接。
客戶端的請求頭中沒有connection這個頭,如果是http1.0協議默認為close,如果是http1.1協議默認為keep-alive。

keepalive時Nginx的等待時長是多少?

  長連接時,Nginx在輸出完響應體后,會設置當前連接的keepalive屬性,然后等待客戶端的下一次請求,同時也設置了一個最大等待時間,這個時間通過keepalive_timeout來配置,如果是0,則表示關掉長連接,此時不管客戶端的connection值是什么都會強制設為close。

keepalive的優勢是什么?

  服務端確定是keepalive打開時,在響應的http頭中也會有connection=Keep-Alive,否則為Close。如果connection值為colse,Nginx在響應完數據后就會關掉連接。所以對于請求量較大的Nginx來說,關掉keepalive最后會產生較多的time-wait狀態的socket。當客戶端的一次訪問需要多次訪問同一個server時,keepalive會大量減少time-wait的數量,

以上總結參考https://mp.weixin.qq.com/s/bXtI45d7M-XjkJH3ARZiMQ

總結

以上是生活随笔為你收集整理的Nginx重要概念之keepalive的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。