《构建高性能web站点》–服务器并发处理能力(3)
继续昨天晚上的总结,每天学习一点,打算在这个月把所有的学习完,然后再细分一下每个地方,这一章太牛逼了,它完全可以把一个菜鸟编程一个中鸟。
总结一:系统调用
进程的运行态分为用户态和内核态两种运行模式,进程可以在这两种运行模式下切换,当然会有一定的开销。一般情况下,程序进行数据的运算,以及内存中数据的管理都是在用户态的,但是一旦要写磁盘、发送网络数据,就得切换到内核态进行系统调用,因为系统调用有更多的权利控制计算机,内核态完成后之后切换回用户态,这个比较好理解。
系统调用在linux下的查看方式,strace -p pid 就可以查看到一个进程的运行的系统调用了,这是nginx的子进程空闲的时候的strace过程。
[root@centos www]# strace -p 6991 Process 6991 attached - interrupt to quit gettimeofday({1301575497, 166608}, NULL) = 0 epoll_wait(14, {}, 512, 500) = 0 gettimeofday({1301575497, 667346}, NULL) = 0 epoll_wait(14, {}, 512, 500) = 0 gettimeofday({1301575498, 167645}, NULL) = 0 epoll_wait(14, {}, 512, 500) = 0 gettimeofday({1301575498, 667913}, NULL) = 0
总结2:nginx的内存管理概况
nginx可以用多线程的方式来处理请求,线程之间可以共享内存资源,及时申请,及时释放,这让nginx的内存占用很低。官方介绍,nginx维护10000个非活跃的http连结只需要2.5m的内存,太bt了,2.5m的内存能做什么。
总结3:长连接的利弊
长连接是TCP层的一个概念,就是一次连结多次发送数据,因为建立连接的代价太大,需要3次握手确认,如果能重用连结,将减少不少的开销。
好处:提高了连结的重用,提高传输速度。如果是用户批量下载小图标、小图片之类的操作,用长连接可以大大提高速度。
弊端:比如apache 的进程数有限,但是它也必须在没有传输数据的时候继续维护这个长连接,就是占着茅房不xx,这个在上茅房的人很多的时候将严重影响别人的身体健康。
总结4:长连接协商
如果客户端浏览器支持长连接,它会在请求的时候发送一个
connection: Keep-Alive 的头(对于IE7,这个时间默认60s)
如果服务器设置了支持长连接,就会返回一个头(比如apache)
Keep-Alive: timeout=5,max=100(表示长连接持续5s,最多传输100次)
长连接时间是以短的那个为准。
- 下一篇: 写在清明节
- 上一篇: 《构建高性能web站点》——服务器并发处理能力–服务器进程
相关推荐
- 毕业这段时间
- Posted on 10月07日
- 利用Curl、socket、file_get_contents POST数据
- Posted on 05月16日
- Webkit内核探究【1】——Webkit简介【转】
- Posted on 04月06日
- 2013年9月1日孤独骑行密云水库
- Posted on 09月22日
﮷货源网﮷ Goldlion(金利来)SESKALO(西斯卡罗)Lindsay phillips异形GGDB SSTARMcQueen(麦昆)LACOSTE(鳄鱼)hTtP://7048.ahuo.cf
ౘ高跟诱惑ౘౘ唐嫣丝袜ౘhTTp://T.cN/R6q1v0q