IT系統(tǒng)運維-最大TCP連接數(shù)
2020-05-01 17:41 作者:艾銻無限 瀏覽量:
對于業(yè)務服務器來說,
IT系統(tǒng)運維會經(jīng)常被問到服務器的最大并發(fā)連接數(shù),最大吞吐量等負載數(shù)據(jù)信息。以此來確認業(yè)務情況。下面就這個問題跟大家討論。供廣大
IT系統(tǒng)運維參考。
啟動線程數(shù):
啟動線程數(shù)=【任務執(zhí)行時間/(任務執(zhí)行時間-IO等待時間)】*CPU內(nèi)核數(shù)
最佳啟動線程數(shù)和CPU內(nèi)核數(shù)量成正比,和IO阻塞時間成反比。如果任務都是CPU計算型任務,那么線程數(shù)最多不超過CPU內(nèi)核數(shù),因為啟動再多線程,CPU也來不及調(diào)度;相反如果是任務需要等待磁盤操作,網(wǎng)絡響應,那么
多啟動線程有助于提高任務并發(fā)度,提高系統(tǒng)吞吐能力,改善系統(tǒng)性能。
單機最大tcp連接數(shù)
在tcp應用中,server事先在某個固定端口監(jiān)聽,client主動發(fā)起連接,經(jīng)過三路握手后建立tcp連接。那么對單機,其最大并發(fā)tcp連接數(shù)是多少?如何標識一個TCP連接
在確定最大連接數(shù)之前,先來看看系統(tǒng)如何標識一個tcp連接。系統(tǒng)用一個4四元組來唯一標識一個TCP連接:{local ip, local port,remote ip,remote port}。
client最大tcp連接數(shù)
client每次發(fā)起tcp連接請求時,除非綁定端口,通常會讓系統(tǒng)選取一個空閑的本地端口(local port),該端口是獨占的,不能和其他tcp連接共享。tcp端口的數(shù)據(jù)類型是unsigned short,因此本地端口個數(shù)最大只有65536,端口0
有特殊含義,不能使用,這樣可用端口最多只有65535,所以在全部作為client端的情況下,最大tcp連接數(shù)為65535,這些連接可以連到不同的server ip。
server最大tcp連接數(shù)
server通常固定在某個本地端口上監(jiān)聽,等待client的連接請求。不考慮地址重用(unix的SO_REUSEADDR選項)的情況下,即使server端有多個ip,本地監(jiān)聽端口也是獨占的,因此server端tcp連接4元組中只有remote ip(也就
是client ip)和remote port(客戶端port)是可變的,因此最大tcp連接為客戶端ip數(shù)×客戶端port數(shù),對IPV4,不考慮ip地址分類等因素,最大tcp連接數(shù)約為2的32次方(ip數(shù))×2的16次方(port數(shù)),也就是server端單機最大tcp
連接數(shù)約為2的48次方。
實際的tcp連接數(shù)
上面給出的是理論上的單機最大連接數(shù),在實際環(huán)境中,受到機器資源、操作系統(tǒng)等的限制,特別是sever端,其最大并發(fā)tcp連接數(shù)遠不能達到理論上限。在unix/linux下限制連接數(shù)的主要因素是內(nèi)存和允許的文件描述符個數(shù)
(每個tcp連接都要占用一定內(nèi)存,每個socket就是一個文件描述符),另外1024以下的端口通常為保留端口。在默認2.6內(nèi)核配置下,經(jīng)過試驗,每個socket占用內(nèi)存在15~20k之間。
影響一個socket占用內(nèi)存的參數(shù)包括:
rmem_max
wmem_max
tcp_rmem
tcp_wmem
tcp_mem
grep skbuff /proc/slabinfo
對server端,通過增加內(nèi)存、修改最大文件描述符個數(shù)等參數(shù),單機最大并發(fā)TCP連接數(shù)超過10萬 是沒問題的,國外 Urban Airship 公司在產(chǎn)品環(huán)境中已做到 50 萬并發(fā) 。在實際應用中,對大規(guī)模網(wǎng)絡應用,還需要考慮C10K 問
題。曾幾何時我們還在尋求網(wǎng)絡編程中C10K問題的解決方案,但是現(xiàn)在從硬件和操作系統(tǒng)支持來看單臺服務器支持上萬并發(fā)連接已經(jīng)沒有多少挑戰(zhàn)性了。
我們先假設單臺服務器最多只能支持萬級并發(fā)連接,其實對絕大多數(shù)應用來說已經(jīng)遠遠足夠了,但是對于一些擁有很大用戶基數(shù)的互聯(lián)網(wǎng)公司,往往面臨的并發(fā)連接數(shù)是百萬,千萬,甚至騰訊的上億(注:QQ默認用的UDP協(xié)議)。雖然現(xiàn)在的集群,分布式技術可以為我們將并發(fā)負載分擔在多臺服務器上,那我們只需要擴展出數(shù)十臺電腦就可以解決問題,但是我們更希望能更大的挖掘單臺服務器的資源,先努力垂直擴展,再進行水平擴展,這樣可以有效的節(jié)省服務器相關的開支(硬件資源,機房,運維,電力其實也是一筆不小的開支)。
艾銻無限科技專業(yè):IT外包、
企業(yè)外包、
北京IT外包、桌面運維、
弱電工程、網(wǎng)站開發(fā)、wifi覆蓋方案,
網(wǎng)絡外包,網(wǎng)絡管理服務,
網(wǎng)管外包,綜合布線,服務器運維服務,
中小企業(yè)it外包服務,服務器維保公司,硬件運維,網(wǎng)站運維服務
以上文章由北京艾銻無限科技發(fā)展有限公司整理