当前位置:
首页 >
关于C10K问题详解-突破单机性能是高性能网络编程
发布时间:2023/12/20
68
豆豆
生活随笔
收集整理的这篇文章主要介绍了
关于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后台上传