Nginx的keepalive_timeout和TCP的keepalive

    keep alive,分爲HTTP層的Keep-Alive和TCP層的KeepAlive,兩者是不同的概念。

    一般的通信過程爲:TCP層握手 -> HTTP層請求響應 -> TCP層關閉連接

   TCP層的KeepAlive爲TCP層握手結束之後保持連接,其timeout爲TCP層握手結束之後能保持多長時間,如果在這個時間範圍內客戶端沒有數據傳輸,則關閉連接。

   HTTP層的Keep-Alive爲HTTP層請求結束之後保持連接,其timeout爲HTTP層請求結束之後能保持多少時間,如果在這個時間範圍內客戶端沒有數據傳輸,則關閉連接。

   Nginx的keepalive_timeout爲HTTP層的連接超時時間,爲0則表示不啓用Keep-Alive,即請求結束之後立刻關閉連接。

  測試Nginx的keepalive_timeout屬性。

  1、設置Nginx的keepalive_timeout爲20s,日誌等級設爲debug(需要編譯加上debug支持)。

    訪問一個連接,見error.log,以下日誌都簡寫,只寫明主要部分。

      11:30:10 *** set http keepalive handler

      11:30:10 *** http close request

       ...

      11:30:30 *** http keepalive handler

      11:30:30 *** close http connection

  從日誌可以看到,關閉請求20秒之後,關閉了連接。

  2、設置Nginx的keepalive_timeout爲0,日誌等級設爲debug(需要編譯加上debug支持)。

   訪問一個連接,見error.log,以下日誌都簡寫,只寫明主要部分。

    11:35:00 *** http close request

    11:35:00 *** close http connection

  從日誌可以看到,關閉請求之後立刻關閉了連接。



  

  


 

      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章