一台机器理论能支持的连接数
這里再補(bǔ)充一點(diǎn)小知識(shí),理論上一臺(tái)機(jī)器能夠支撐多少個(gè)連接,有沒有同學(xué)知道??
首先,在確定最大連接數(shù)之前,大家先跟我來先了解一下系統(tǒng)如何標(biāo)識(shí)一個(gè)tcp連接。系統(tǒng)用一個(gè)四元組來唯一標(biāo)識(shí)一個(gè)TCP連接:(source_ip, source_port, destination_ip, destination_port)。即(源IP,源端口,目的IP,目的端口)四個(gè)元素的組合。只要四個(gè)元素的組合中有一個(gè)元素不一樣,那就可以區(qū)別不同的連接,?
比如: 你的IP地址是11.1.2.3, 在8080端口監(jiān)聽?
那么當(dāng)一個(gè)來自 22.4.5.6,端口為5555的連接到達(dá)后,那么建立的這條連接的四元組為 : (11.1.2.3, 8080, 22.4.5.6, 5555)?
這時(shí),假設(shè)上面的那個(gè)客戶(22.4.5.6)發(fā)來第二條連接請(qǐng)求,端口為6666,那么,新連接的四元組為(11.1.2.3, 8080, 22.4.5.6, 5555)?
那么,你主機(jī)的8080端口建立了兩條連接;?
通常來說,服務(wù)端是固定一個(gè)監(jiān)聽端口,比如8080,等待客戶端的連接請(qǐng)求。在不考慮地址重用的情況下,及時(shí)server端有多個(gè)ip,但是本地監(jiān)聽的端口是獨(dú)立的。所以對(duì)于tcp連接的4元組中,如果destination_ip和destination_port不變。那么只有source_ip和source_port是可變的,因此最大的tcp連接數(shù)應(yīng)該為 客戶端的ip數(shù) 乘以 客戶端的端口數(shù)。在IPV4中,不考慮ip分類等因素,最大的ip數(shù)為 2的32次方 ;客戶端最大的端口數(shù)為2的16次方,也就是65536.?也就是服務(wù)端單機(jī)最大的tcp連接數(shù)約為2的48次方。?
當(dāng)然,這只是一個(gè)理論值,以linux服務(wù)器為例,實(shí)際的連接數(shù)還取決于?
1. 內(nèi)存大小(因?yàn)槊總€(gè)TCP連接都要占用一定的內(nèi)存)、?
2. 文件句柄限制,每一個(gè)tcp連接都需要占一個(gè)文件描述符,一旦這個(gè)文件描述符使用完了,新來的連接會(huì)返回一個(gè)“Can’t open so many files”的異常。如果大家知道對(duì)于操作系統(tǒng)最大可以打開的文件數(shù)限制,就知道怎么去調(diào)整這個(gè)限制?
a) 可以執(zhí)行【ulimit -n】得到當(dāng)前一個(gè)進(jìn)程最大能打開1024個(gè)文件,所以你要采用此默認(rèn)配置最多也就可以并發(fā)上千個(gè)TCP連接。?
b) 可以通過【vim /etc/security/limits.conf】去修改系統(tǒng)最大文件打開數(shù)的限制 c) 可以通過【cat /proc/sys/fs/file-max】查看linux系統(tǒng)級(jí)最大打開文件數(shù)限制,表示當(dāng)前這個(gè)服務(wù)器最多能同時(shí)打開多少個(gè)文件?
*?
soft nofile 2048?
* hard?nofile 2048?
*?
表示修改所有用戶限制、soft/hard表示軟限制還是硬限制,2048表示修改以后的值?
當(dāng)然,這塊還有其他很多的優(yōu)化的點(diǎn)
3. 帶寬資源的限制?
總結(jié)?
基于http請(qǐng)求通信到tcp,再到tcp通信的原理以及IO阻塞這塊了解了通信的一些基本知識(shí),如果對(duì)于這塊有感興趣的同學(xué),可以去找再去找一些資料研究研究,實(shí)際上我們只需要掌握到我講解的程度就行。?
?
總結(jié)
以上是生活随笔為你收集整理的一台机器理论能支持的连接数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多路复用的好处
- 下一篇: http通信协议的基本原理