1.?端口號限制?
首先,不存在由于端口號限制 65535 個的說法,因為目標端的ip和端口是無限的。

當然, Linux 對可使用的端口范圍是有具體限制的,具體可以用如下命令查看:
[root]#?cat?/proc/sys/net/ipv4/ip_local_port_range?
1024?65000
這個限制可以 vim /etc/sysctl.conf 這個文件進行修改,我們在這個文件里添加一行記錄:
net.ipv4.ip_local_port_range?=?60000?60009
保存好后執(zhí)行 sysctl -p /etc/sysctl.conf 使其生效。
2.?文件描述符的限制?

系統(tǒng)級:當前系統(tǒng)可打開的最大數(shù)量,通過 cat /proc/sys/fs/file-max 查看
用戶級:指定用戶可打開的最大數(shù)量,通過 cat /etc/security/limits.conf 查看
進程級:單個進程可打開的最大數(shù)量,通過 cat /proc/sys/fs/nr_open 查看

[root?~]#?cat?/proc/sys/fs/file-max
100000
[root?~]#?cat?/proc/sys/fs/nr_open
100000
[root?~]#?cat?/etc/security/limits.conf
...
*?soft?nproc?100000
*?hard?nproc?100000
修改單個進程可打開的最大文件描述符限制為100,可以這樣:
echo?100?>?/proc/sys/fs/nr_open
理論上文件描述符可以設置的足夠大。
3. 線程數(shù)的限制?
每建一個TCP連接就創(chuàng)建一個線程的方式,是最傳統(tǒng)的多線程并發(fā)模型,早期的操作系統(tǒng)也只支持這種方式。
?C10K?問題: 當服務器連接數(shù)達到 1 萬且每個連接都需要消耗一個線程資源時,操作系統(tǒng)就會不停地忙于線程的上下文切換,最終導致系統(tǒng)崩潰。
但是:
現(xiàn)在的操作系統(tǒng)都支持 IO 多路復用的方式,簡單說就是一個線程可以管理多個 TCP 連接的資源,這樣就可以用少量的線程來管理大量的 TCP 連接了。
4.?內存的限制?

這個錯誤叫內存溢出,每個TCP連接本身,以及這個連接所用到的緩沖區(qū),都是需要占用一定內存的

5.?CPU的限制?

6. 總結一下,創(chuàng)建tcp連接需要的資源:
