关于C10K问题详解-突破单机性能是高性能网络编程
生活随笔
收集整理的這篇文章主要介紹了
关于C10K问题详解-突破单机性能是高性能网络编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文轉自:https://www.jianshu.com/p/ba7fa25d3590
C10K問題由來
隨著互聯網的普及,應用的用戶群體幾何倍增長,此時服務器性能問題就出現。最初的服務器是基于進程/線程模型。新到來一個TCP連接,就需要分配一個進程。假如有C10K,就需要創建1W個進程,可想而知單機是無法承受的。那么如何突破單機性能是高性能網絡編程必須要面對的問題,進而這些局限和問題就統稱為C10K問題,最早是由Dan Kegel進行歸納和總結的,并且他也系統的分析和提出解決方案。
C10K問題的本質
C10K問題的本質上是操作系統的問題。對于Web 1.0/2.0時代的操作系統,傳統的同步阻塞I/O模型處理方式都是requests per second。當創建的進程或線程多了,數據拷貝頻繁(緩存I/O、內核將數據拷貝到用戶進程空間、阻塞,進程/線程上下文切換消耗大, 導致操作系統崩潰,這就是C10K問題的本質。
可見, 解決C10K問題的關鍵就是盡可能減少這些CPU資源消耗。
C10K問題的解決方案
從網絡編程技術的角度來說,主要思路:
每個進程/線程處理一個連接
該思路最為直接,但是申請進程/線程是需要系統資源的,且系統需要管理這些進程/線程,所以會使資源占用過多,可擴展性差
每個進程/線程同時處理 多個連接(I/O多路復用)
參考:
總結
以上是生活随笔為你收集整理的关于C10K问题详解-突破单机性能是高性能网络编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu:back up whole
- 下一篇: 禁止百度云盘p2p后台上传