C10k-problem
I/O :
I/O Stack的流程(内核3.3版本的I/O Stack):
I/O Stack流图分为几大部分:
1>.direct I/O 的O_Direct调用
2>.Page Cache;
3>.VFS,也即文件系统、网络通信等
4>.Block I/O层
5>.I/O调度方式;
6>.SCSI处理层;
7>.磁盘硬件设备;
(来自thomas-krenn.com的图片)
TCP/UDP:
UDP就不同了, 面向报文形式, 系统是不会缓冲的, 也不会做优化的, Send的时候, 就会直接Send到网络上, 对方收不收到也不管, 所以这块数据总是能够能一包一包的形式接收到, 而不会出现前一个包跟后一个包都写到缓冲然后一起Send.
C10K问题的最大特点是:设计不够良好的程序,其性能和连接数及机器性能的关系往往 是非线性的。举个例子:如果没有考虑过C10K问题,一个经典的基于select的程序能在 旧服务器上很好处理1000并发的吞吐量,它在2倍性能新服务器上往往处理不了并发2000的吞吐量。 这是因为在策略不当时,大量操作的消耗和当前连接数n成线性相关。会导致单个任务的资源消耗和当前连接数的关系会是O(n)。而服务程序需要同时对数以万计的socket进 行I/O处理,积累下来的资源消耗会相当可观,这显然会导致系统吞吐量不能和机器性 能匹配。为解决这个问题,必须改变对连接提供服务的策略。
主要有两方面的策略:
1. Serve one client with each thread/process, and use blocking I/O 。Apache、ftpd等都是这种工作模式。
2. Serve many clients with single thread, and use nonblocking I/O and readiness notification 。优点在于实现较简单,方便移植,也 能提供足够的性能;缺点在于无法充分利用多CPU的机器。尤其是程序本身没有复杂的 业务逻辑时。
3. Serve many clients with each thread, and use nonblocking I/O and readiness notification 对经典模型2的简单改进,缺点是容易在多线程并发上出bug,甚至某些OS不支持多线程 操作readiness notification。
4. Serve many clients with each thread, and use asynchronous I/O 在有AI/O支持的OS上,能提供相当高的性能。不过AI/O编程模型和经典模型差别相当 大,基本上很难写出一个框架同时支持AI/O和经典模型,降低了程序的可移植性。
C10k-problem相关推荐
- The C10K problem原文翻译
原文地址:http://www.cnblogs.com/fll/archive/2008/05/17/1201540.html The C10K problem 如今的web服务器需要同时处理一万个以 ...
- The C10K problem
原文:http://www.kegel.com/c10k.html 转载:https://rtoax.blog.csdn.net/article/details/117317900 译文:https: ...
- (转)The C10K problem翻译
The C10K problem 如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的网络是个big place了. 现在的计算机也很强大了,你只需要花大概$1200就可以买一个 ...
- 转 The C10K problem 中文版 - 如何处理高并发连接
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 文章来源 ...
- [转]The C10K problem(中文版) - 如何处理高并发连接
文章来源:http://www.cnblogs.com/fll/archive/2008/05/17/1201540.html 原始来源:http://www.kegel.com/c10k.html ...
- The C10K problem翻译
如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的网络是个big place了. 现在的计算机也很强大了,你只需要花大概$1200就可以买一个1000MHz的处理器,2G的内存 ...
- 网络编程——The C10K Problem(C10K = connection 10 kilo 问题)。k 表示 kilo,即 1000
The C10K problem翻译 (C10K = connection 10 kilo 问题).k 表示 kilo,即 1000 比如:kilometer(千米), kilogram(千克). 如 ...
- 【转】The C10K problem翻译
引用地址:http://blog.csdn.net/typename/article/details/5598145 . 如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的网络 ...
- [转]The C10K problem翻译
转载自:http://www.cnblogs.com/fll/archive/2008/05/17/1201540.html 如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的 ...
- The C10K Problem -- 翻译版
如今的web服务器需要同时处理上万个客户端了,难道不是吗?毕竟如今的网络已经非常庞大了. 现在的计算机也很强大了,你只需要花大概1200美元就可以买一个有1000MHz处理器.2G内存.1000Mbi ...
最新文章
- 【Sql Server】DateBase-子查询
- Powerup tinyos接口实现
- idea右键项目没有git 【解决方法】
- 电脑无internet访问_电脑中的代理服务器怎么设置 代理服务器设置方法 - 操作系统...
- STM32 LED灯的另一种写法
- Android缓存学习入门(二)
- 识别出脸部以及给脸部打马赛克
- java model1和model2_Java项目(4)——探究两种开发模型的异同-Model1与Model2
- SQL SERVER 2005自动备份
- Couldn‘t find ffmpeg or avconv - defaulting to ffmpeg, but may not work
- inode客户端连接成功上不了网_iNode的客户端部分常见问题
- 会议panel是什么意思中文_topanel中文是什么意思
- 女生对于脸上的痘痘要格外的呵护哦
- Jupyter notebook使用类错误提示 takes no arguments
- React Native version mismatch
- 优化代码中的“坏味道”
- 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...
- 哈工大计算机学院张宏莉,计算机科学与技术学科博士研究生培养方案2014-哈工大计算机学院.DOC...
- Android kotlin工具类获取屏幕分辨率及宽高
- 浮点数双精度,单精度以及半精度知识总结
热门文章
- PHP之两个日期之间相差天数
- 3dmax动画学习阶段总结
- ar8171 linux网卡驱动,ar8171 8175网卡驱动(ar8171网卡驱动下载)V1.0.1 官方最新版
- java编写篮球比赛计分,android 篮球比赛计分器
- 3dMax模型导入SuperMap
- 数字化技术在制造业的应用要点—产品开发篇
- 了解适用于Android应用程序的本机,WebView和混合模板
- CSS Table(表格)
- sql操作access时出现 MSDTC错误,服务器 'SERVER' 上的 MSDTC 不可用。
- 微信小程序:“去中心化”的社交电商,电商正转向以商品为核心