国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > 管理維護 > 正文

經典的”服務器最多65536個連接”誤解_負載集群教程

2024-09-10 14:20:57
字體:
來源:轉載
供稿:網友

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

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

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

服務器綁定一個ip:port, 然后accept連接, 所有accept的連接使用的本地地址也是同樣的ip:port.
擴展內容

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

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

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

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

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

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

單個進程所能打開的最大文件描述符數:

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

結論

無論是對于服務器還是客戶端, 認為”一臺機器最多建立65536個TCP連接”是沒有根據的, 理論上遠遠超過這個值.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 滦南县| 五寨县| 临颍县| 龙泉市| 红河县| 当阳市| 彭泽县| 安顺市| 吴桥县| 耒阳市| 湄潭县| 北票市| 东阳市| 华容县| 威远县| 双柏县| 慈利县| 五大连池市| 唐河县| 通化县| 鸡泽县| 方城县| 江山市| 郧西县| 手机| 远安县| 三原县| 凯里市| 鹤庆县| 新疆| 龙陵县| 达孜县| 公安县| 满洲里市| 调兵山市| 南川市| 鄯善县| 沙河市| 天长市| 灵宝市| 兰西县|