欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

經(jīng)典的”服務(wù)器最多65536個連接”誤解_負(fù)載集群教程

編輯Tag賺U幣

“因為TCP端口號是16位無符號整數(shù), 最大65535, 所以一臺服務(wù)器最多支持65536個TCP socket連接.” – 一個非常經(jīng)典的誤解! 即使是有多年網(wǎng)絡(luò)編程經(jīng)驗的人, 也會持有這個錯誤結(jié)論.

要戳破這個錯誤結(jié)論, 可以從理論和實踐兩方面來.
理論

系統(tǒng)通過一個四元組來唯一標(biāo)識一條TCP連接. 這個四元組的結(jié)構(gòu)是{local ip, local port, remote ip, remote port}, 對于IPv4, 系統(tǒng)理論上最多可以管理2^(32+16+32+16), 2的96次方個連接. 如果不僅僅考慮TCP, 則是一個五元組, 加上協(xié)議號(TCP, UDP或者其它).
實踐

服務(wù)器綁定一個ip:port, 然后accept連接, 所有accept的連接使用的本地地址也是同樣的ip:port.
擴(kuò)展內(nèi)容

如果某個客戶端向同一個TCP端點(ip:port)發(fā)起主動連接, 那么每一條連接都必須使用不同的本地TCP端點, 如果客戶端只有一個IP則是使用不同的本地端口, 該端口的范圍在*nix系統(tǒng)上的一個例子是32768到61000, 可以通過如下命令查看:

[root@benegg.com ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000

也就是說, 一個客戶端連接同一個服務(wù)器(比如進(jìn)行壓力測試), 最多可以發(fā)起30000個左右的連接.

TCP客戶端(TCP的主動發(fā)起者)可以在同一ip:port上向不同的服務(wù)器發(fā)起主動連接, 只需在bind之前對socket設(shè)置SO_REUSEADDR選項.

系統(tǒng)支持的最大打開文件描述符數(shù)(包括socket連接):

[root@benegg.com ~]# cat /proc/sys/fs/file-max
580382

單個進(jìn)程所能打開的最大文件描述符數(shù):

[root@benegg.com ~]# ulimit -n
1024

結(jié)論

無論是對于服務(wù)器還是客戶端, 認(rèn)為”一臺機(jī)器最多建立65536個TCP連接”是沒有根據(jù)的, 理論上遠(yuǎn)遠(yuǎn)超過這個值.

來源:網(wǎng)絡(luò)搜集//所屬分類:負(fù)載集群教程/更新時間:2011-12-08
相關(guān)負(fù)載集群教程