單機併發連線數研究

2022-07-14 13:00:24 字數 1356 閱讀 4146

系統用乙個4四元組來唯一標識乙個tcp連線:。

client每次發起tcp連線請求時,除非繫結埠,通常會讓系統選取乙個空閒的本地埠(local port),該埠是獨佔的,不能和其他tcp連線共享。tcp埠的資料型別是unsigned short,因此本地埠個數最大只有65536,埠0有特殊含義,不能使用,這樣可用埠最多只有65535,所以在全部作為client端的情況下,最大tcp連線數為65535,這些連線可以連到不同的server ip。

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次方。

在unix/linux下限制連線數的主要因素是記憶體和允許的檔案描述符個數(每個tcp連線都要占用一定記憶體,每個socket就是乙個檔案描述符), 另外1024以下的埠通常為保留埠。對server端,通過增加記憶體、修改最大檔案描述符個數等引數,單機最大併發tcp連線數超過10萬 是沒問題的。

注意事項:

1.預設的conntrack_max值不會低於128

2.對於帶有超過1g記憶體的系統,conntrack_max的預設值會被限制在65536(但是可以手工設定成更大的值)

3.預設hashsize的值不會小於16

4.對於帶有超過1g記憶體的系統,hashsize的預設值會被限制在8192(但是可以手工設定成更大的值)

總結1.每個連線都要耗費一定的資源,比如cpu、mem,所以,真實值往往很難達到理論值;

2.根據協議的不同,能達到的最大連線數也不一樣,比如http/1.0連線的建立和關閉都非常快,而且瀏覽器對併發連線數有限制,所以,很難達到最大的理論值。http/1.1支援流線技術,多個請求可以復用乙個連線,這樣就大大減少了併發連線數。ftp或者telnet連線都是長連線,很容易達到最大值。

3.很多裝置(比如netscaler)在伺服器端都支援連線池(連線復用),裡面的連線都是長連線,一樣實現了http/1.1裡面的流線技術,乙個連線就可以處理多個客戶端連線。這樣除了減少連線資源,同時還減少了負載均衡器的其他資源開銷,同時減低了內網的頻寬。

4.一些裝置(比如netscaler的tcp-offload)支援tcp解除安裝,僅僅把已經建立的連線發到伺服器端,而tcp的三次握手完全有負載均衡器接管,這樣,伺服器端的連線就成倍的減少。

1.2.

3.單機千萬併發連線實戰

單機最大tcp連線數

拷貝黏貼 單機最大tcp 連線數 網路程式設計 在tcp 應用中,server 事先在某個固定埠監聽,client 主動發起連線,經過三路握手後建立 tcp連線。那麼對單機,其最大併發 tcp連線數是多少?如何標識乙個tcp連線 在確定最大連線數之前,先來看看系統如何標識乙個tcp 連線。系統用乙個...

檢視併發連線數

netstat n awk tcp end 返回結果示例 last ack 5 syn recv 30 established 1597 fin wait1 51 fin wait2 504 time wait 1057 其中的syn recv表示正在等待處理的請求數 established表示正常...

Linux檢視連線數,併發數

軟連線 ln s home ictfmcg data photo var j data photo tomcat 6的connector配置如下 其中最後兩個引數意義如下 maxthreads tomcat起動的最大執行緒數,即同時處理的任務個數,預設值為200 acceptcount 當tomca...