當前位置:
首頁 > 最新 > 18:C10M 問題:單伺服器處理1000萬連接

18:C10M 問題:單伺服器處理1000萬連接

今天只讀這一篇文章。如果能把文章吃透,對理解Linux 系統和網路編程會有極大提高

C10M 問題:單伺服器處理1000萬連接

閱讀時間:120分鐘

標籤: network, os, system, server, linux

文章不長,可能需要30分鐘能讀完。但引申出來的很多東西,值得細細琢磨。

這是2013年的文章,我讀它的目的是為了再次回顧著名的C10K問題。

C10K ( Concurrent 10k connection )問題是指在2000年左右,大家發現單台伺服器最多就能同時處理10k的連接數。如果你想保持更多連接數,只好買更多伺服器了。

其問題的源頭在於當時的Linux內核,多路復用機制使用的是select/poll這種模式。

所謂多路復用,簡單說就是,當一個網路數據包來了,伺服器要選擇把數據包交給那個進程處理。

select/poll 的實質一樣,只是實現略有不同。它有兩個限制:

1. 同一時間只能監聽1024個文件描述符(Linux默認情況下),可以理解為維護1024個線程

2. 其選擇空閑線程的演算法是 O(n) 的時間複雜度

所以當年流行的 Apache 伺服器就是用的這個內核。假如每次網路連接默認超時設置為10秒,那麼伺服器要能維護10x1024個鏈接,Apache 性能驟降。

後來的解決方案是,Linux 2.6內核出了 epoll 這個新的多路復用方案,解決了上述兩個問題,演算法時間複雜度降為 O(1) 了。Nginx 是最早使用這個epoll 的伺服器之一。

參考資料:

15年過去了,現在大家要想辦法解決C10M 問題了。這篇文章的作者覺得,解決這個問題不能過於依賴Linux 內核,因為Linux 並不是為了網路而生的。從網路包的分發,多核的利用,內存的擴展性,都應該自己動手寫。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

這個世界需要英雄—守望先鋒
一個特殊的日子
手繪彩鉛玫瑰
世界環境日 我嚮往的家鄉
五分鐘人像-Kahlen

TAG:公眾號 |

您可能感興趣

都是1499元!銳龍2600和1600X兩款處理器怎麼選?
4020mAh+630處理器+1300萬像素+5.5寸屏幕,這款神機只賣799元!
2018年八代i5-8400處理器/B360主板/GTX1060獨顯裝機配置方案
1699元買5000mAh電池驍龍660處理器,360打造了款遊戲手機
酷睿i5 7200U處理器 聯想小新 潮5000售3599元
5000mAh電池+驍龍660處理器,360手機N7發布
3800元這樣裝機也挺好,i5 8400處理器,16G內存配1050顯卡!
128GB+2300萬雙攝+8GB,搭載驍龍835處理器的旗艦已降至3399元
買電腦處理器i3 8100和i5 7500應該要選哪個?
千元處理器之爭!英特爾i5-8400懟上AMD R5 2600!
4G運存+4000mAh+十核處理器,這款後置1300萬雙攝手機已降至949元
4050mAh+6GB+660處理器+18W快充僅1698元,它是手機界的標杆
疑似360 N8詳細配置曝光:驍龍710處理器,4500mAh大電池
64G+5000mAh+18W快充,從1999跌至999,看到處理器:難怪沒人買
搭載麒麟980處理器的華為mate20:電池容量高達5000毫安
2432個流處理器 耕升 GTX1070Ti G魂售3799元
360也要搭上劉海兒屏,360 OS4.0加持驍龍710處理器!
4款千元神機,6G+128G驍龍660處理器僅要1199元
華為Mate10的麒麟970處理器可以秒殺曉龍835和A11嗎
甜品級處理器,AMD 2300 X、2500X