單機如何實現(xiàn)百萬并發(fā)TCP連接

一開始我無法理解,單機怎么可能實現(xiàn)百萬并發(fā)連接,因為系統(tǒng)可用端口數(shù)只有:65535 - 1024 = 64511,每個TCP連接需要占用一個獨立的端口,那最多也只能做到6W多并發(fā)連接。然而我忽視了一個很基本的問題,端口號在同一個IP下不能重復,但我們可以給一個網(wǎng)卡綁定多個IP地址,如果單機要主動發(fā)起100萬并發(fā)連接,我們最少需要使用17個IP地址。

TCP連接標識符

  • src-ip
  • src-port
  • dest-ip
  • dest-port
  • protocol

TCP服務(wù)端SOCKET

TCP服務(wù)器監(jiān)聽在指定端口接收客戶端連接后,創(chuàng)建一個新的socket用于同客戶端進行讀寫數(shù)據(jù),但該socket并不需要也不會綁定一個新的端口,所以對于TCP服務(wù)器來說,不存在端口不夠用的情況,TCP服務(wù)器能夠保持多少個并發(fā)連接取決于服務(wù)器性能、內(nèi)存大小、帶寬大小以及服務(wù)器端設(shè)置(例如:進程能打開的文件數(shù)等)。以100W連接數(shù)為例,所需要總內(nèi)存大小大約為:1,000,00020K = 20G, 廣播一個1KB的消息需要占用的帶寬:1,000,0001K = 1000M,所需打開文件描述符1,000,000個。

對于TCP服務(wù)器連接數(shù)壓力測試來說,瓶頸在客戶端,因為每個客戶端要連接到TCP服務(wù)端需要使用一個本地端口,而對于一個IP地址來說,端口范圍就是:0-65536,其中還要一些端口被系統(tǒng)或其他程序使用。所以從一臺主機單個IP上發(fā)起同TCP服務(wù)器的連接數(shù)理論最大值為65535,當然我們可以給該主機綁定N個IP地址,同時從多個IP發(fā)起連接,所以理論上客戶端可以發(fā)起的連接數(shù)為:IP數(shù)*65535,這時客戶端的CPU、內(nèi)存和帶寬以及文件句柄資源就是限制。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 18.1 引言 TCP是一個面向連接的協(xié)議。無論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接。本章將...
    張芳濤閱讀 3,537評論 0 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • 1、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,739評論 0 11
  • 個人認為,Goodboy1881先生的TCP /IP 協(xié)議詳解學習博客系列博客是一部非常精彩的學習筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,215評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,390評論 6 174

友情鏈接更多精彩內(nèi)容