單機最大tcp連接數
網絡編程
在tcp應用中,server事先在某個固定端口監聽,client主動發起連接,經過三路握手後建立tcp連接。那麼對單機,其最大併發tcp連接數是多少?
如何標識一個TCP連接
在確定最大連接數之前,先來看看系統如何標識一個tcp連接。系統用一個4四元組來唯一標識一個TCP連接:{local ip, local port,remote ip,remote port}。
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 問題。
http://www.cnblogs.com/mydomain/archive/2013/05/27/3100835.html
單機最大tcp連接數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
單機最大tcp連接數
f8900123
2018-09-12 02:57:48
Linux最大打開文件描述符數
smart818
2019-02-22 22:17:07
Linux下 lsof 用法
拉拉你小手
2018-12-31 14:10:41
[一]JavaIO之FileDescriptor文件描述符
noteless
2018-09-16 10:05:29
Linux最大打開文件描述符數
smart818
2018-09-12 06:17:35
文件描述符到底是誰控制的
bai_yibing
2018-09-12 06:17:09
Linux系統安裝後的基礎優化-基於CentOS(5.8/6.4)
johnzhou313
2019-02-22 21:08:01
CentOS系統安裝後的基礎優化
thong2006
2019-02-22 18:54:16
Linux文件系統性能優化
zjl2006022223
2019-02-22 16:04:59
Centos6.9系統部分基礎優化(更新時間2018/04/19) 原
醉生夢死zsms
2018-12-02 21:31:15
CentOS系統安裝後的基礎優化
thong2006
2018-09-14 02:41:54
CentOSLinux服務器安全設置
thong2006
2018-09-14 02:40:36
linux系統安全常規優化
斯基2012
2018-09-13 02:47:45
Linux系統安裝後的基礎優化-基於CentOS(5.8/6.4)
johnzhou313
2018-09-12 04:17:33