日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

面试官给我挖坑:单台服务器并发TCP连接数到底可以有多少 ?

發(fā)布時(shí)間:2024/4/11 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试官给我挖坑:单台服务器并发TCP连接数到底可以有多少 ? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方“朱小廝的博客”,選擇“設(shè)為星標(biāo)”

后臺(tái)回復(fù)"k8s"領(lǐng)取阿里云《深入淺出k8s.pdf》

歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/backend/how-many-concurrent-tcp-connections-can-a-single-server-have/

曾幾何時(shí)我們還在尋求網(wǎng)絡(luò)編程中 C10K 問題的解決方案,但是現(xiàn)在從硬件和操作系統(tǒng)支持來看單臺(tái)服務(wù)器支持上萬并發(fā)連接已經(jīng)沒有多少挑戰(zhàn)性了。有關(guān) C10K(即單機(jī)1萬個(gè)并發(fā)連接問題)的信息可以參考《上一個(gè)10年,著名的C10K并發(fā)連接問題[1]》和《The C10K problem[2]》這兩篇文章。

我們先假設(shè)單臺(tái)服務(wù)器最多只能支持萬級(jí)并發(fā)連接,其實(shí)對(duì)絕大多數(shù)應(yīng)用來說已經(jīng)遠(yuǎn)遠(yuǎn)足夠了,但是對(duì)于一些擁有很大用戶基數(shù)的互聯(lián)網(wǎng)公司,往往面臨的并發(fā)連接數(shù)是百萬、千萬、甚至上億。雖然現(xiàn)在的集群,分布式技術(shù)可以為我們將并發(fā)負(fù)載分擔(dān)在多臺(tái)服務(wù)器上,那我們只需要擴(kuò)展出數(shù)十臺(tái)電腦就可以解決問題,但是我們更希望能更大的挖掘單臺(tái)服務(wù)器的資源,先努力垂直擴(kuò)展,再進(jìn)行水平擴(kuò)展,這樣可以有效的節(jié)省服務(wù)器相關(guān)的開支(硬件資源、機(jī)房、運(yùn)維人力、電力其實(shí)也是一筆不小的開支)。

那么到底一臺(tái)服務(wù)器能夠支持多少TCP并發(fā)連接呢?

首先需要考慮文件句柄的限制。在linux下編寫網(wǎng)絡(luò)服務(wù)器程序的朋友肯定都知道每一個(gè)tcp連接都要占一個(gè)文件描述符,一旦這個(gè)文件描述符使用完了,新的連接到來返回給我們的錯(cuò)誤是“Socket/File:Can't open so many files”。這時(shí)你需要明白操作系統(tǒng)對(duì)可以打開的最大文件數(shù)的限制。我們可以通過 ulimit -n命令、/etc/security/limits.conf 文件 以及 /etc/sysctl.conf 文件等來修改文件句柄數(shù)。更多細(xì)節(jié)可以參閱 「朱小廝的博客」里的這篇文章《文件句柄?文件描述符?傻傻分不清楚》。

其次要考慮的是端口范圍的限制。操作系統(tǒng)上端口號(hào)1024以下是系統(tǒng)保留的,從1024-65535是用戶使用的。由于每個(gè)TCP連接都要占一個(gè)端口號(hào),所以我們最多可以有60000多個(gè)并發(fā)連接。我想有這種錯(cuò)誤思路朋友不在少數(shù)吧?面試官也比較喜歡在這里引導(dǎo)挖坑,類似的問題還有:一個(gè)UDP連接可以復(fù)用已經(jīng)被TCP連接占用的端口嘛?(可以在下方留言區(qū)留下你的答案。)

如何標(biāo)識(shí)一個(gè)TCP連接? 系統(tǒng)使用一個(gè)4四元組來唯一標(biāo)識(shí)一個(gè)TCP連接:本地端口號(hào) local port、本地IP地址 local ip、遠(yuǎn)端端口號(hào) remote port、遠(yuǎn)端IP地址 remote ip。server通常固定在某個(gè)本地端口上監(jiān)聽,等待client的連接請(qǐng)求。不考慮地址重用(unix的SO_REUSEADDR選項(xiàng))的情況下,即使server端有多個(gè)ip,本地監(jiān)聽端口也是獨(dú)占的,因此server端tcp連接4元組中只有remote ip(也就是client ip)和remote port(客戶端port)是可變的,因此最大tcp連接為客戶端ip數(shù)×客戶端port數(shù),對(duì)IPV4,不考慮ip地址分類等因素,最大tcp連接數(shù)約為2的32次方(ip數(shù))×2的16次方(port數(shù)),也就是server端單機(jī)最大tcp連接數(shù)約為2的48次方。

上面給出的結(jié)論都是理論上的單機(jī)TCP并發(fā)連接數(shù),實(shí)際上單機(jī)并發(fā)連接數(shù)肯定要受硬件資源(內(nèi)存)、網(wǎng)絡(luò)資源(帶寬)的限制,至少對(duì)我們的需求現(xiàn)在可以做到數(shù)十萬級(jí)的并發(fā)了。

參考資料

[1]

上一個(gè)10年,著名的C10K并發(fā)連接問題: http://www.52im.net/thread-566-1-1.html

[2]

The C10K problem: http://www.kegel.com/c10k.html

歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/backend/how-many-concurrent-tcp-connections-can-a-single-server-have/

想知道更多?描下面的二維碼關(guān)注我

后臺(tái)回復(fù)”加群“獲取公眾號(hào)專屬群聊入口

當(dāng)當(dāng)優(yōu)惠碼福利來一波!當(dāng)當(dāng)全場(chǎng)自營(yíng)圖書5折,用優(yōu)惠碼:TASEMU(長(zhǎng)按復(fù)制),滿200(原價(jià)400)再減30,相當(dāng)于170=400,四折多一點(diǎn)。使用渠道:當(dāng)當(dāng)小程序或當(dāng)當(dāng)APP。使用時(shí)間:4/10-4/23。目前優(yōu)惠碼只有少量了,且不會(huì)再增加。

【原創(chuàng)系列 | 精彩推薦】

  • Paxos、Raft不是一致性算法嘛?

  • 越說越迷糊的CAP

  • 面試官居然問我Raft為什么會(huì)叫做Raft!

  • 面試官給我挖坑:URI中的//有什么用

  • 網(wǎng)關(guān)Zuul科普

  • 網(wǎng)關(guān)Spring Cloud?Gateway科普

  • 分布式事務(wù)科普——初識(shí)篇

  • 分布式事務(wù)科普——終結(jié)篇

  • 面試官給我挖坑:a[i][j]和a[j][i]有什么區(qū)別?

  • Nginx架構(gòu)原理科普

朕已閱?

總結(jié)

以上是生活随笔為你收集整理的面试官给我挖坑:单台服务器并发TCP连接数到底可以有多少 ?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。