單機最大tcp連線數

2021-07-25 03:18:34 字數 2021 閱讀 7878

拷貝黏貼

單機最大tcp

連線數

網路程式設計

在tcp

應用中,

server

事先在某個固定埠監聽,

client

主動發起連線,經過三路握手後建立

tcp連線。那麼對單機,其最大併發

tcp連線數是多少?

如何標識乙個tcp連線

在確定最大連線數之前,先來看看系統如何標識乙個tcp

連線。系統用乙個

4四元組來唯一標識乙個

tcp連線:。

client

最大tcp

連線數

client

每次發起

tcp連線請求時,除非繫結埠,通常會讓系統選取乙個空閒的本地埠(

local port

),該埠是獨佔的,不能和其他

tcp連線共享。

tcp埠的資料型別是

unsigned short

,因此本地埠個數最大只有

65536

,埠0

有特殊含義,不能使用,這樣可用埠最多只有

65535

,所以在全部作為

client

端的情況下,最大

tcp連線數為

65535

,這些連線可以連到不同的

server ip。

server

最大tcp

連線數

server

通常固定在某個本地埠上監聽,等待

client

的連線請求。不考慮位址重用(

unix

的so_reuseaddr

選項)的情況下,即使

server

端有多個

ip,本地監聽埠也是獨佔的,因此

server

端tcp連線4

元組中只有

remote ip

(也就是

client ip

)和remote port

(客戶端

port

)是可變的,因此最大

tcp連線為客戶端ip數

×客戶端

port

數,對ipv4

,不考慮

ip位址分類等因素,最大

tcp連線數約為2的

32次方(

ip數)×2的

16次方(

port

數),也就是

server

端單機最大

tcp連線數約為2的

48次方。

實際的tcp

連線數

上面給出的是理論上的單機最大連線數,在實際環境中,受到機器資源、作業系統等的限制,特別是sever

端,其最大併發

tcp連線數遠不能達到理論上限。在

unix/linux

下限制連線數的主要因素是記憶體和允許的檔案描述符個數(每個

tcp連線都要占用一定記憶體,每個

socket

就是乙個檔案描述符),另外

1024

以下的埠通常為保留埠。

在預設2.6

核心配置下,經過試驗,每個

socket

占用內存在

15~20k

之間。

影響乙個

socket

占用記憶體的引數包括:

rmem_max

wmem_max

tcp_rmem

tcp_wmem

tcp_mem

grep skbuff /proc/slabinfo

對server

端,通過增加記憶體、修改最大檔案描述符個數等引數,單機最大併發

tcp連線數超過

10萬 是沒問題的,國外 

urban airship 

公司在產品環境中已做到 

50 萬併發 。在實際應用中,對大規模網路應用,還需要考慮

c10k 

問題。

原文:

Windows 下單機最大TCP連線數

在做socket 程式設計時,我們經常會要問,單機最多可以建立多少個 tcp 連線,本文將介紹如何調整系統引數來調整單機的最大tcp連線數。windows 下單機的tcp連線數有多個引數共同決定,下面一一介紹 hkey local machine system currentcontrolset s...

Windows 下單機最大TCP連線數

在做socket 程式設計時,我們經常會要問,單機最多可以建立多少個 tcp 連線,本文將介紹如何調整系統引數來調整單機的最大tcp連線數。windows 下單機的tcp連線數有多個引數共同決定,下面一一介紹 hkey local machine system currentcontrolset s...

Windows 下單機最大TCP連線數

在做socket 程式設計時,我們經常會要問,單機最多可以建立多少個 tcp 連線,本文將介紹如何調整系統引數來調整單機的最大tcp連線數。windows 下單機的tcp連線數有多個引數共同決定,下面一一介紹 hkey local machine system currentcontrolset s...