国产亚洲人成在线视频网站

<th id="ssz4z"></th>
  • <th id="ssz4z"></th>

    1. 您現在的位置:CDN高防 > 服務器租用幫助 > linux的TCP連接數量最大不能超過65535個嗎,那服務器是如何應對百萬千萬的并發的

      linux的TCP連接數量最大不能超過65535個嗎,那服務器是如何應對百萬千萬的并發的

      發布時間:2020-04-09 12:00:14 ??文章來源:CDN高防 ??作者:徐孝姣
      本文由徐孝姣編輯,關鍵詞:tcp連接數上限,tcp連接數,tcp,65535,標題:linux的TCP連接數量最大不能超過65535個嗎,那服務器是如何應對百萬千萬的并發的,主要內容講解的是:65,535只是Linux系統中可使用端口port數量的上限,端口port數量與TCP連接數量并非完全一一對應的關系,服務器支持的TCP并發連接數量主要跟服務器的內存以及允許單個進程同時打開的文件數量有
      問題有一個概念上的誤解,錯誤的把TCP端口號的上限65535理解成了TCP連接數的上限,進而認為Linux無法實現超過65,535個的并發任務,實際上端口號數量和TCP連接數確實有關聯,但并非一一對應的關系。
      65,535從哪來的,干啥的?
      要解釋好這個問題,就要先說清楚65,535的含義。
      linux的TCP連接數量最大不能超過65535個嗎,那服務器是如何應對百萬千萬的并發的
      在Linux系統中,如果兩個機器要通信,那么相互之間需要建立TCP連接,為了讓雙方互相認識,Linux系統用一個四元組來唯一標識一個TCP連接: {local ip, local port, remote ip, remote port},即本機IP、本機端口、遠程IP、遠程端口,IP和端口就相當于小區地址和門牌號,只有拿到這些信息,通信的雙方才能互相認知。在Linux系統中,表示端口號(port)的變量占16位,這就決定了端口號最多有2的16次方個,即65,536個,另外端口0有特殊含義不給使用,這樣每個服務器最多就有65,535個端口可用。因此,65,535代表Linux系統支持的TCP端口號數量,在TCP建立連接時會使用。
      TCP怎么建立連接,與端口號是什么關系?
      linux的TCP連接數量最大不能超過65535個嗎,那服務器是如何應對百萬千萬的并發的
      Linux服務器在交互時,一般有兩種身份:客戶端或者服務器端。典型的交互場景是:
      (1)服務器端主動創建監聽的socket,并綁定對外服務端口port,然后開始監聽
      (2)客戶端想跟服務器端通信時,就開始連接服務器的端口port
      (3)服務端接受客戶端的請求,然后再生成新的socket
      (4)服務器和客戶端在新的socket里進行通信
      可以看到,端口port主要用在服務器和客戶端的“握手認識”過程,一旦互相認識了,就會生成的的socket進行通信,這時候port就不再需要了,可以給別的socket通信去使用,所以很明顯TCP連接的數量可以大于TCP端口號的數量65,535。
      考慮一下兩個極端場景,即某臺Linux服務器只作為客戶端或者服務器端
      (1)Linux服務器只作為客戶端
      這時候每發起一個TCP請求,系統就會指定一個空間的本地端口給你用,而且是獨占式的,不會被別的TCP連接搶走,這樣最多可以建立65535個連接,每個連接都與不同的服務器進行交互。這種場景,就是題主所描述的樣子,但是由于條件過于苛刻,屬于小概率事件,所以更多的還是理論上的可能,現實的環境中幾乎不會出現。
      (2)Linux服務器只作為服務端
      這種場景下,服務端就會固定的監聽本地端口port,等著客戶端來向它發起請求。為了計算簡單,我們假設服務器端的IP跟端口是多對一的,這樣TCP四元組里面就有remote ip和remote port是可變的,因此最大支持創建TCP個數為2的32次方(IP地址是32位的)乘以2的16次方(port是16位的)等于2的48次方。
      現實中單臺Linux服務器支持的TCP連接數量
      通過前面的分析我們知道,在現實場景中,由于存在端口port復用的情況,服務器可同時支持的TCP連接數跟65,535沒有一一對應關系,事實上,真正影響TCP連接數量的,是服務器的內存以及允許單一進程同時打開文件的數量,因為每創建一個TCP連接都要創建一個socket句柄,每個socket句柄都占用一部分系統內存,當系統內存被占用殆盡,允許的TCP并發連接數也就到了上限。一般來講,通過增加服務器內存、修改最大文件描述符個數等,可以做到單臺服務器支持10萬+的TCP并發。
      linux的TCP連接數量最大不能超過65535個嗎,那服務器是如何應對百萬千萬的并發的
      當然,在真實的商用場景下,單臺服務器都會編入分布式集群,通過負載均衡算法動態的調度不同用戶的請求給最空閑的服務器,如果服務器平均內存使用超過80%的警戒線,那么就會及時采用限流或者擴展集群的方式來保證服務,絕對不會出現服務器的內存被耗盡的情況,那樣就算事故了。
      總之,65,535只是Linux系統中可使用端口port數量的上限,端口port數量與TCP連接數量并非完全一一對應的關系,服務器支持的TCP并發連接數量主要跟服務器的內存以及允許單個進程同時打開的文件數量有關系,通過端口復用及調整服務器參數等手段,單臺服務器支持的TCP并發連接數是可以高于65,535的。
      本文tag: tcp連接數上限 tcp連接數 tcp 65535
      本文鏈接:http://www.salomontrails.com/news/1186.html
      下一篇:單臺服務器最大并發tcp連接數是多少呢,不能超過65535個嗎?
      上一篇:圖床有什么用,圖片放自己的服務器上不可以嗎?

      相關推薦:

      隨機推薦:

      QQ:317197518

      電子郵箱:317197518@qq.com

      公司業務:我們提供海內外服務器租用,公司產品豐富:獨立服務器、虛擬主機、ADSL撥號、VPS云主機等,價格便宜,歡迎選購

      公司地址:重慶市渝北區賽迪路2號金山商業中心A座6F

      CDN高防:一家全國領先的真實硬防服務器的提供商
      Copyright 2018-2020 ? www.salomontrails.com All Rights Reserved.

      分享按鈕 国产亚洲人成在线视频网站
      <th id="ssz4z"></th>
    2. <th id="ssz4z"></th>