談談tcp中backlog參數

談談tcp中backlog參數

  backlog指定了內核爲此套接口排隊的最大連接個數,對於給定的監聽套接口,內核要維護兩個隊列:未連接隊列和已連接隊列,根據TCP三路握手中三個分節來分割這兩個隊列。服務器處於listen狀態時,收到客戶端syn分節(connect)時在未完成隊列中創建一個新的條目,然後用三路握手的第二個分節即服務器的syn響應客戶端,此條目在第三個分節到達前(客戶端對服務端syn的ack)一直保留在未完成連接隊列中,如果三路握手完成,該條目將從未完成連接隊列搬到已完成連接隊列尾部。當進程調用accept時,從已完成連接隊列中喚醒。backlog被規定爲兩個隊列總和的最大值,大多數實現默認值爲5,但在高併發Web服務器中此值顯然不夠,Lighttpd中此值達到128*8。需要設置此值更大一些的原因是未完成連接隊列的長度可能因爲客戶端syn的到達及等待三路握手第三個分節的到達延時而增大。Netty默認的backlog爲100。該值時可以修改的,需要根據實際場景和網絡狀況進行靈活設置。
markdown縮進

半方大的空白 或 
全方大的空白 或 
不斷行的空白格 或 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章