服务器并发处理能力之《构建高性能WEB站点》读书笔记

本篇主要总结一些与服务器并发处理能力相关的指标名词及一些相应的linux指令含义。

说之前粘一下百度来的信息(捂脸)

3种WEB服务器的比较:

 在相对比较大的网站,节约下来的服务器成本无疑是客观的。而有些小型网站往往服务器不多,如果采用 Apache 这类传统 Web 服务器,似乎也还能撑过去。但有其很明显的弊端: Apache 在处理流量爆发的时候(比如爬虫或者是 Digg 效应) 很容易过载,这样的情况下采用 Nginx 最为合适。
建议方案:

Apache 后台服务器(主要处理php及一些功能请求 如:中文url)
Nginx  前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)
Lighttpd 图片服务器
总体来说,随着nginx功能得完善将使他成为今后web server得主流。好,收!

  • 吞吐率

单位时间内服务器处理的请求数,用来描述Web服务器并发处理能力,单位:reqs/s。实际中,我们更关心服务器并发处理能力的上限,也就是单位时间内服务器能够处理的最大请求数,即最大吞吐率。通常我们会使用“压力测试”的方法,模拟足够数目的并发用户数,分别持续发送一定的HTTP请求,并统计测试持续的总时间。压测前提包括以下几个条件:1)并发用户数 2)总请求数 3)请求资源描述。

  • 进程和轻量级进程

从本质上讲,多进程的好处并不仅仅在于CPU时间的轮流使用,还在于CPU计算和I/O操作进行了很好的重叠使用,这里的I/O主要指磁盘I/O和网络I/O,它们的速速要比CPU就像是老牛漫步相较于超音速飞机。现代计算机的DMA技术让CPU不参与I/O操作的全过程,比如进程通过系统调用,使得CPU向网卡或磁盘等I/O设备发出指令,然后进程被挂起,释放出CPU资源,等待I/O设备完成工作后通过中断来通知进程重新就绪。进程的调度由内核来进行,每个进程都有自己独立的内存地址空间和生命周期。当子进程被父进程创建后,便将父进程地址空间的所有数据都复制到自己的地址空间,完全继承父进程的所有上下文信息,他们之间可以通信,但是不相互依赖,也无权干涉彼此的地址空间。进程的创建使用fork()系统调用。

轻量级进程:由于进程之间相对独立,各自维护庞大的地址空间和上下文信息,无法很好地低成本共享数据,比如Apache的prefork模型,在处理大量并发请求时,内存的大量消耗有时也会成为性能提升的制约因素。但是,进程的优越性有时也恰恰体现在其相互独立所带来的稳定性和健壮性方面。为此,Linux 2.0之后,提供了对轻量级进程的支持,它由一个新的系统调用clone()来创建,并由内核直接管理,像普通线程一样独立,各自拥有进程描述符,但是这些进程允许共享一些资源,比如地址空间、打开的文件等。轻量级进程减少了内存的开销,并为多进程应用程序的数据共享提供了直接支持,但是其上下文切换的开销还是在所难免。

  • 进程调度器

内核中的进程调度器(Scheduler)维护着各种状态的进程队列。在Linux中,进程调度器维护着一个包括所有可运行进程的队列,成为“运行队列”(Run Quere),以及一个包括所有休眠进程和僵尸进程的列表。

进程调度器的一项重要工作就是决定下一个运行的进程,如果运行队列中有不止一个进程,这就需要进程告诉进程调度器各自的紧急程度, 这就是进程优先级。进程优先级除了可以由进程自己决定,进程调度器在进程运行时也可以动态调整他们的优先级。

  • 一些指标

top命令下,PR表示进程的优先级属性Priority,而优先级动态调整值用NI表示。PR所代表的的值其实就是进程调度器分配给进程的时间长度,单位是时钟数,Linux上一般为10ms,PR值为15则表示这个进程的时间片为150ms;RES指进程占用的物理内存空间大小;Swap值表示使用的虚拟内存空间大小;VIRT值等于物理内存和虚拟内存空间的总和。load average表示系统负载,数据来源于/proc/loadavg,这三个值分别表示系统最近1分钟、5分钟和15分钟计算得出的系统负载;IOWait指CPU空闲并且等待I/O操作完成的时间比例。比如一个任务需要花费10ms I/O操作时间和10ms的CPU时间,那么IOWait为50%;

在操作系统中,时间片的长度是权衡利弊后的一个博弈结果,如果个进程时间片太短,CPU浪费在进程切换上的时间就会比较大,整体效率降低;如果时间片太长,则多任务实时性以及交互性就无法保证。

Linux为每个处理器分配一个运行队列,互不影响,进程调度负责将进程分配到适合的CPU,解决了多处理器的服务器SMP的支持问题。

  • 系统负载

系统负载越高,代表CPU越繁忙,越无法很好的满足所有进程的需要。系统负载定义:单位时间内运行队列中就绪等待的进程数平均值。所以当运行队列中就绪进程不需要等待就可以马上获得CPU时,系统负载便非常低。当系统负载为0.00时,说明任何进程只要就绪,就可以马上获得CPU,不需要等待,此时系统响应速度最快。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值