很早微博上一直討論比較多的問題,這裏轉載個知乎的答案:單機單網卡最大tcp長連接數真的是65535嗎?
- 作者:許懷遠
鏈接:https://www.zhihu.com/question/66553828/answer/244313925
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
TCP四元組(quadruple)的概念,就算培訓班出來的也聽說過吧?不做解釋了。(源IP,源port,目標IP,目標port),最大能有多少連接數,全看這4個參數。從服務端accept客戶端的角度,IPv4爲例源IP可以有幾十億個,不同客戶端都可以connect過來源port理論上65535個,因爲local port range緣故,一般只有一半左右目標IP,單網卡也可以多IP,上限多少看操作系統限制目標port理論上65535個,由於port range,一般也只有一半左右四個因子相乘,可以有超過萬億級的連接數,當然只是理論上的一般我們對外的服務,會引入更多的限制,例如HTTP,目標端口是固定的,目標IP通過DNS負載均衡可以有多個,但是一般單機不會這麼做。儘管多了限制,上限還是很高啊,僅源IP和源端口相乘就比65535高不知道多少個數量級。除此之外,操作系統層面還有更多限制,比如進程fd上限,32位系統還有內存限制,64位系統單機物理內存也是有限的,現在最大的配置,內存也就T級,還沒有到P級。現實一點,一般的服務器,比如阿里雲上能買得到的配置,能承受多少連接數呢?100萬級是很容易做到的,再往高裏去就不是hello world這麼容易了。就算傻傻的開多線程,一個線程一個連接,也遠遠不止65535個啊。
- 陳碩大神的一個相關文章: