色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一臺服務器,最大支持的TCP連接數是多少?

小林coding ? 來源:小林coding ? 2024-01-19 18:16 ? 次閱讀

大家好,我是小林。

最近有讀者面試騰訊的時候,被問到 2 個很有意思的問題:

一個服務端進程最大能支持多少條 TCP 連接?

一臺服務器最大能支持多少條 TCP 連接?

很多同學第一反應就是端口的限制,端口號最多是 65536個,那就最多只能支持 65536 條 TCP 連接。

實際上這是不對的!

今天都帶大家分析一波這兩個問題。

一個服務端進程最多能支持多少條 TCP 連接?

首先我們要知道 TCP 連接本質上在內核里就是一個 socket 對象。

structsocket{
....
//INET域專用的一個socket表示,提供了INET域專有的一些屬性,比如IP地址,端口等
structsock*sk;
//TCP連接的狀態(tài):SYN_SENT、SYN_RECV、ESTABLISHED.....
shorttype;
....
};

structinet_sock{
...
__u32daddr;//IPv4的目標地址。
__u16dport;//目標端口。
__u32saddr;//源地址。
__u16sport;//源端口。
...
};

這個 socket 對象也就是一個數據結構,里面包含了 TCP 四元組的信息:源IP、源端口、目標IP、目標端口。

6ee88d74-b6a5-11ee-8b88-92fbcf53809c.png

TCP 四元組

所以, 只要確認了【源IP、源端口、目標IP、目標端口】這四個信息,就能在內核中找到這個 socket 對象,也就能確定一條 TCP 連接。

一個服務端進程通常是監(jiān)聽 1 個端口號(當然也可能監(jiān)聽多個端口號,這里不考慮),比如我的圖解網站的 nginx 服務,就監(jiān)聽了 443 端口。

6efcd57c-b6a5-11ee-8b88-92fbcf53809c.png

你們看圖解網站的時候,實際上就是通過 nginx 服務把網頁數據發(fā)送給你們的。

然后,服務端進程除了會固定監(jiān)聽某個一個端口之外,也通常會綁定 0.0.0.0 IP 地址。

這個IP地址是特殊的, 0.0.0.0 指的是本機上的所有IPV4地址,如果一個主機有兩個 IP 地址,192.168.1.1 和 10.1.2.1,并且該主機上的一個服務監(jiān)聽的地址是0.0.0.0,那么通過兩個 IP 地址都能夠訪問該服務。

所以一個服務端進程,意味著他的 IP地址和端口號是固定的(0.0.0.0:443)。

也就是當客戶端與服務端建立一條 TCP 連接的時候,這個 TCP 連接的四元組信息中服務端的 IP地址和端口號是固定的,能產生變化的就是客戶端的 IP 地址和端口號了。

因此,一個服務端進程最大能支持的 TCP 連接個數的計算公式如下:

6f00b48a-b6a5-11ee-8b88-92fbcf53809c.png

對 IPv4,客戶端的 IP 數最多為 2 的 32 次方,客戶端的端口數最多為 2 的 16 次方。

那么一個服務端進程理想情況下,最大的 TCP 連接數約為 2 的 48 次方(2^32 (ip數) * 2^16 (端口數),這數值是非常夸張的了,約等于兩百多萬億!

當然,服務端進程最大能支持的 TCP 連接數遠不能達到理論上限,還會受到文件描述符、內存大小資源的限制,畢竟 socket 在 Linux 的視角其實就是文件資源,而且一個 socket 對象也會占用一定的內存資源。

因此,會受以下因素影響:

文件描述符限制,每個 TCP 連接都是一個文件,如果文件描述符被占滿了,會發(fā)生 Too many open files。Linux 對可打開的文件描述符的數量分別作了三個方面的限制:

系統(tǒng)級:當前系統(tǒng)可打開的最大數量,通過 cat /proc/sys/fs/file-max 查看;

用戶級:指定用戶可打開的最大數量,通過 cat /etc/security/limits.conf 查看;

進程級:單個進程可打開的最大數量,通過 cat /proc/sys/fs/nr_open 查看;

內存限制,每個 TCP 連接都要占用一定內存,操作系統(tǒng)的內存是有限的,如果內存資源被占滿后,會發(fā)生 OOM。

一臺服務器最大最多能支持多少條 TCP 連接?

前面分析是一個服務端進程理的情況,理論上能最大支持約為 2 的 48 次方(2^32 (ip數) * 2^16 (端口數),約等于兩百多萬億!

那到了一臺服務器的視角就會有一點不一樣。

一臺服務器是可以有多個服務端進程的,每個服務端進程監(jiān)聽不同的端口,比如:ssh的22,Redis的6339,當然所有65535個端口你都可以用來監(jiān)聽一遍。

6f05e95a-b6a5-11ee-8b88-92fbcf53809c.png

當然所有65535個端口你都可以用來監(jiān)聽一遍,這樣理論上線就到了2的32次方(ip數)×2的16次方(port數)×2的16次方(服務器port數)個,感興趣你可以算一下,這個基本相當于無窮個了。

不過理想和實際總是會有差距的!

因為Linux每維護一條TCP連接都要花費資源,處理連接請求,保活,數據的收發(fā)時需要消耗一些CPU,維持TCP連接主要消耗內存。

我們題目的問題是考慮最大多少個連接,所以我們先不考慮數據的收發(fā),那么TCP在靜止的狀態(tài)下,就不怎么消耗CPU了,主要消耗內存,而Linux上內存是有限的。

首先,我們要知道一條處于 ESTABLISH 狀態(tài)的 TCP 連接具體占用多大內存?

一個 TCP 對象占用的大小,等于它所包含的一些數據結構占用大小的總和,也是就把上面這些數據結構的大小累加起來,就是一個 TCP 連接占用的大小了。

這里直接給大家一個結論,一條處于 ESTABLISH 狀態(tài)的 TCP 連接占用的大小是 3.44 KB(0.81K+2.19K+0.19K+0.25K)。

6f09bf44-b6a5-11ee-8b88-92fbcf53809c.png

TCP對象內存開銷總結

也就是,每一條靜止狀態(tài)的TCP連接大約需要吃 3.44K 的內存。

那么 8 GB 物理內存的服務器,最大能支持的 TCP 連接數=8GB/3.44KB=2,438,956(約240萬)

當然, 實際過程中的 TCP 連接,肯定不是靜止狀態(tài)的,還會進行發(fā)送數據和接收數據了,那么這些過程還是會額外消耗更多的內存資源的,并發(fā)很難達到百萬級別。

總結

一個服務端進程最多能支持多少條 TCP 連接?

如果在不考慮服務器的內存和文件句柄資源的情況下,理論上一個服務端進程最多能支持約為 2 的 48 次方(2^32 (ip數) * 2^16 (端口數),約等于兩百多萬億!

但是在實際中是支持不了這個數值的,每個 TCP 連接都是一個文件,會占用文件句柄資源,也會占用一定的內存空間。

一臺服務器最大最多能支持多少條 TCP 連接?

一臺服務器是可以有多個服務端進程的,每個服務端進程監(jiān)聽不同的端口,當然所有65535個端口你都可以用來監(jiān)聽一遍。

當然所有65535個端口你都可以用來監(jiān)聽一遍,這樣理論上線就到了2的32次方(ip數)×2的16次方(port數)×2的16次方(服務器port數)個,這個基本相當于無窮個了。

但是 Linux每維護一條TCP連接都要花費內存資源的,每一條靜止狀態(tài)(不發(fā)送數據和不接收數據)的 TCP 連接大約需要吃 3.44K 的內存,那么 8 GB 物理內存的服務器,最大能支持的 TCP 連接數=8GB/3.44KB=2,438,956(約240萬)。

實際過程中的 TCP 連接,還會進行發(fā)送數據和接收數據了,那么這些過程還是會額外消耗更多的內存資源的,并發(fā)很難達到百萬級別。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11310

    瀏覽量

    209597
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1356

    瀏覽量

    79093

原文標題:騰訊三面:一臺服務器,最大支持的TCP連接數是多少?

文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何標識TCP連接

    tcp應用中,server事先在某個固定端口監(jiān)聽,client主動發(fā)起連接,經過三路握手后建立tcp連接。那么對單機,其最大并發(fā)
    的頭像 發(fā)表于 10-10 10:33 ?2974次閱讀

    AT+CIPSERVERMAXCONN查詢/設置服務器允許建立的最大連接數是幾個呢?

    AT+CIPSERVERMAXCONN查詢/設置服務器允許建立的最大連接數是幾個呢?
    發(fā)表于 06-27 08:07

    服務器超出了連接范圍的解決方法

    服務器超出了連接范圍的解決方法終端服務器超出了最大允許連接解決方法使用遠程桌面鏈接登錄到終端服務器
    發(fā)表于 01-06 22:59

    Linux的TCP Server最大連接數是多少

    無論是Linux還是Windows作為服務器都可以支持眾多的Client的長連接,例如我實驗的在單I7 4790+8G內存的機器上搭建的服務器
    發(fā)表于 05-17 23:30

    怎樣把設計的library移動到另一臺服務器上去?

    在完成設計之后,想把設計的library移動到另一臺服務器。直接copy過去,設計相關的工藝庫的信息怎么處理啊?在設計之前,會做attach工藝庫的動作。對于完整的設計,這個要怎么attach工藝庫呢?
    發(fā)表于 06-24 06:44

    如何將整個POST參數字符串傳遞到另一臺服務器

    正在發(fā)送“X=nnn&Y=nnn&Z=nnn”,并希望將其原封不動地傳遞給另一臺服務器
    發(fā)表于 02-27 06:18

    有沒有人有多個LWIP客戶端通過個端口連接一臺服務器的示例?

    有沒有人有多個客戶端通過個端口連接一臺服務器的示例?這樣做的最佳做法是什么?
    發(fā)表于 03-02 08:17

    租用一臺服務器多少錢?

    租用一臺服務器多少錢??很多初次購買服務器的用戶經常會詢問服務器多少錢一臺的問題,而要回答這個問題,首先就得遵循服務器購買流程,先依據自身的
    發(fā)表于 07-20 11:11 ?1389次閱讀

    一臺Linux服務器最多能支撐多少個TCP連接

    量,還是內存大小,亦或者是可創(chuàng)建文件句柄數量?讓我們起來了解下吧。 困惑很多人的并發(fā)問題 在網絡開發(fā)中,我發(fā)現有很多同學對個基礎問題始終是沒有徹底搞明白。那就是一臺服務器最大究竟能
    的頭像 發(fā)表于 12-29 11:13 ?5182次閱讀

    臺服務器支持TCP并發(fā)連接數

    的文件數量有關系,通過端口復用及調整服務器參數等手段,單臺服務器支持TCP并發(fā)連接數是可以高于65535的。
    的頭像 發(fā)表于 11-06 19:36 ?1629次閱讀

    用舊手機DIY一臺服務器

    本文將向你展示如何使用 UrBackup 和 Linux Deploy在一臺 Android 舊手機上搭建一臺備份服務器。舊手機的污染問題眾所周知,我有一臺舊手機,雖然外殼有裂紋和磨損
    的頭像 發(fā)表于 12-30 14:30 ?1339次閱讀

    一臺服務器最大能建立多少條TCP連接呢?

    我們知道在Linux中切皆文件,那么一臺服務器最大能打開多少個文件呢?Linux上能打開的最大文件數量受三個參數影響
    的頭像 發(fā)表于 02-03 10:11 ?1607次閱讀

    服務器數據恢復—服務器陣列磁盤進水損壞的數據恢復案例

    服務器數據恢復環(huán)境: 臺服務器+存儲陣列柜,共上百塊硬盤,劃分了數十組lun。 服務器
    的頭像 發(fā)表于 01-22 13:40 ?356次閱讀
    <b class='flag-5'>服務器</b>數據恢復—<b class='flag-5'>服務器</b>陣列磁盤進水損壞的數據恢復案例

    主機托管是多個用戶共享一臺服務器嗎?有什么優(yōu)勢

    主機托管并不是多個用戶共享一臺服務器。主機托管是服務,客戶可以將自己的硬件服務器托管給服務商,并享受專業(yè)的
    的頭像 發(fā)表于 08-13 14:45 ?270次閱讀

    多個網站放在同一臺服務器ip有什么影響?

    將多個網站放在同一臺服務器上,使用同個IP地址,可能會有以下影響: 1、資源共享:多個網站共享同一臺服務器的資源,如CPU、內存、存儲空間和帶寬。如果其中個網站流量或資源消耗突然增
    的頭像 發(fā)表于 09-12 11:15 ?598次閱讀
    主站蜘蛛池模板: 99精品亚洲| 中文字幕无码A片久久| 永久免费精品影视网站| 国产精品无码久久久久不卡| 牛牛在线国产精品| 亚洲最大成人| 精品无码久久久久久久动漫| 亚洲AV电影天堂男人的天堂| 国产精品黄色大片| 手机在线亚洲日韩国产| 国产成人精品视频| 忘忧草在线影院www日本| 国产99RE在线观看69热| 色欲AV精品一区二区入口| 富婆夜店找黑人猛男BD在线| 日韩精品熟女一区二区三区中文 | 777黄色片| 美女被艹网站| 999zyz色资源站在线观看| 男人的天堂黄色片| XXXchinese国产HD| 三级黄色在线视频| 国产精品久久久久影院免费| 性直播免费| 九九热在线观看| 2017年伦理片免费观看| 内射少妇36P九色| japanese from色系| 日日碰狠狠添天天爽| 国产久久热99视频| 一二三四高清中文版视频| 拉菲娱乐主管高工资q39709| 99亚洲精品自拍AV成人软件| 日本熟妇多毛XXXXX视频| 国产精品青青草原app大全| 亚洲人成电影网站| 免费A级毛片无码无遮挡内射| 变态露出野外调教| 亚洲zooz人禽交xxxx| 葵司中文第一次大战黑人| 成人免费在线观看|