The C10K problem
原文链接:http://www.kegel.com/c10k.html
It's time for web servers to handle ten thousand clients simultaneously,don't you think? After all, the web is a big place now.
And computers are big, too. You can buy a 1000MHz machinewith 2 gigabytes of RAM and an 1000Mbit/sec Ethernet card for $1200 or so. Let's see - at 20000 clients, that's50KHz, 100Kbytes, and 50Kbits/sec per client. It shouldn't take any more horsepower than
that to take four kilobytes from the disk and send them to the network once a second for eachof twenty thousand clients.(That works out to $0.08 per client, by the way. Those$100/client licensing fees some operating systems charge are starting to look a little
heavy!) So hardware is no longer the bottleneck.
In 1999 one of the busiest ftp sites, cdrom.com, actually handled 10000 clients simultaneouslythrough a Gigabit Ethernet pipe.As of 2001, that same speed is nowbeing offered by several
ISPs,who expect it to become increasingly popular with large business customers.
And the thin client model of computing appears to be coming back instyle -- this time with the server out on the Internet, servingthousands of clients.
With that in mind, here are a few notes on how to configure operating systems and write code to support thousands of clients. The discussioncenters around Unix-like operating systems, as that's my personal areaof interest, but Windows is also covered a bit.
Contents
- The C10K problem
- Related Sites
- Book to Read First
- I/O frameworks
- I/O Strategies
- Serve many clients with each thread, and use nonblocking I/O andlevel-triggered readiness notification
- The traditional select()
- The traditional poll()
- /dev/poll (Solaris 2.7+)
- kqueue (FreeBSD, NetBSD)
- Serve many clients with each thread, and use nonblocking I/O and readinesschange notification
- epoll (Linux 2.6+)
- Polyakov's kevent (Linux 2.6+)
- Drepper's New Network Interface (proposal for Linux 2.6+)
- Realtime Signals (Linux 2.4+)
- Signal-per-fd
- kqueue (FreeBSD, NetBSD)
- Serve many clients with each thread, and use asynchronous I/O and completion notification
- Serve one client with each server thread
- LinuxThreads (Linux 2.0+)
- NGPT (Linux 2.4+)
- NPTL (Linux 2.6, Red Hat 9)
- FreeBSD threading support
- NetBSD threading support
- Solaris threading support
- Java threading support in JDK 1.3.x and earlier
- Note: 1:1 threading vs. M:N threading
- Build the server code into the kernel
- Serve many clients with each thread, and use nonblocking I/O andlevel-triggered readiness notification
- Comments
- Limits on open filehandles
- Limits on threads
- Java issues [Updated 27 May 2001]
- Other tips
- Other limits
- Kernel Issues
- Measuring Server Performance
- Examples
- Other interesting links
The C10K problem的更多相关文章
- (转)The C10K problem翻译
The C10K problem 如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的网络是个big place了. 现在的计算机也很强大了,你只需要花大概$1200就可以买一个 ...
- 网络编程——The C10K Problem(C10K = connection 10 kilo 问题)。k 表示 kilo,即 1000
The C10K problem翻译 (C10K = connection 10 kilo 问题).k 表示 kilo,即 1000 比如:kilometer(千米), kilogram(千克). 如 ...
- C10K problem
什么是C10K问题 1W个客户端连接上一个server,客户不定时的发送请求. I/O策略 软件架构 1.单线程解决多重I/O调用 不要使用阻塞/同步的调用,如果非要这么做,那就采用多进程或者 ...
- 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题
1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...
- C10K问题渣翻译
The C10K problem [Help save the best Linux news source on the web -- subscribe to Linux Weekly News! ...
- C10K问题和Libevent库介绍
http://blog.chinaunix.net/uid-20761674-id-75056.html 一.C10K的问题 C10K的问题在上个世纪90年代就被提出来了.大概的意思是当用户数超过1万 ...
- c10k C10M
高性能网络编程(二):上一个10年,著名的C10K并发连接问题 阅读(22369) | 评论(9)收藏10 淘帖1 赞4 JackJiang Lv.9 1 年前 | |只看大图 1. ...
- C10K并发连接_转
转载:http://blog.csdn.net/wangtaomtk/article/details/51811011 1 C10K问题 大家都知道互联网的基础就是网络通信,早期的互联网可以说是一个小 ...
- C10K问题摘要
本文的内容是下面几篇文章阅读后的内容摘要: http://www.kegel.com/c10k.html (英文版) http://www.oschina.net/translate/c10k (中文 ...
随机推荐
- 16 shell调试技术
trap 命令 基本格式: trap command sig1 sig2 ... sigN 有3种信号可以捕获: EXIT : 从函数中退出, 或整个脚本执行完毕 ERR: 当一 ...
- Python学习(2)基本语法
目录 交互式编程 脚本式编程 Python 标识符 Python保留字符 行和缩进 多行语句 Python 引号 Python注释 Python空行 python的输入和输出 命令行参数 交互式编程 ...
- STM32学习笔记(二) 基于STM32-GPIO的流水灯实现
学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...
- Android GestureDetector方法详解
为了加强点击.拖动响应事件,Android提供了GestureDetector手势识别类.通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single ...
- Spring Boot修改内置Tomcat端口号 (zhuan)
http://blog.csdn.net/argel_lj/article/details/49851625 ********************************************* ...
- RAC 移动 OCR
1.查看是否有OCR备份 # ocrconfig -showbackup 如果没有就备份一份 # ocrconfig -export /oracle/bak/ocr/ocr_11291433_exp. ...
- Druid 数据库用户密码加密 代码实现
druid-1.0.16.jar 阿里巴巴的开源数据连接池 jar包 明文密码+私钥(privateKey)加密=加密密码 加密密码+公钥(publicKey)解密=明文密码 程序代码如下: pack ...
- 20160808_Shell书
1. http://item.jd.com/11075150.html 2.
- [转载]findContours函数参数说明及相关函数
原文地址:findContours函数参数说明及相关函数作者:鸳都学童 findContours函数,这个函数的原型为: void findContours(InputOutputArray imag ...
- phpstorm xdebug 碰到很神奇的一件事
早上配置好了,且正常运行了,然后没有退出phpstorm, 结果到了下午,配置消失了, 还好稳住了阵脚,然后配置了,就好了. 很重要一点,在调试观看源代码的时候,一定要浅薄,然后深入,不然累死,得不偿 ...