Chinaunix首页 | 论坛 | 博客
  • 博客访问: 151686
  • 博文数量: 20
  • 博客积分: 2535
  • 博客等级: 少校
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-17 11:59
文章分类

全部博文(20)

文章存档

2009年(18)

2008年(2)

我的朋友

分类: LINUX

2009-04-28 14:54:23

prefork多路处理模块(MPM)是Linux下默认的处理模块,它是一个非线程型的、预派生的web服务器。有很好的兼容性和很强的自我调节能力。
prefork工作方式:
  一个单独的控制进程(父进程,通常有root用户启动)负责产生子进程,这些子进程用于监听请求并作出应答。Apache总是试图保持一些备用的(spare)或者是空闲的子进程用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生。每个子进程只处理一个链接。在许多系统上它的速度和workerMPM一样快,但是需要更多的内存。
调优:
影响web服务器性能的最大的因素是内存。一个web服务器应该从不使用交换机制,因为数据在内存和硬盘间交换产生的滞后总会使用户感觉”不够快”,所以用户就可能去按”停止”和”刷新”,从而带来更大的负载。我们应该控制MaxClients的设置,以避免服务器产生太多的子进程而发生交换。MaxClients为用于伺服客户端请求的最大子进程数。它受ServerLmit(服务器允许配置的进程数上限)参数的影响,一般MaxClients应该小于或等于ServerLmit。如何计算MaxClients:通过top命令计算出每个Apache进程平均消耗的内存,然后再为其它进程留出足够多的内存,便可计算出MaxClients的数值,MaxClients=(总内存-预留内存)/单个子进程使用的内存。
StartServers, MinSpareServers, MaxSpareServers的设置决定了进程的建立,对性能都有很大的影响。StartServers为apache启动时派生的子进程数;MinSpareServers为空闲子进程的最小数;MaxSpareServers为空闲子进程的最大数.与进程创建相关的是由MaxRequestsPerChild引发的进程的销毁。其默认值是”0″,意味着每个进程所处理的请求数是不受限制的。如果设置,应该足够大,否则子进程可能会频繁的消亡、派生。
HostnameLookups最好设置为off,否则会带来延迟,因为对每一个请求都需要作一次DNS查询。如果你使用了任何”Allow from domain”或”Deny from domain”指令(也就是domain使用的是主机名而不是IP地址),则代价是要进行两次DNS查询(一次正向和一次反向,以确认没有作假)。所以,为了得到最高的性能,应该避免使用这些指令(不用域名而用IP地址也是可以的)。如果网站空间中没有使用 Options FollowSymLinks,Apache就必须执行额外的系统调用以验证符号连接。为了避免这种情况应该在所有地方都设置FollowSymLinks。如果设置AllowOverride all,则Apache会试图对文件名的每一个组成部分都打开.htaccess,如无必要应该对文件系统中所有的地方都使用 AllowOverride None。在Apache2.0能够忽略将要被发送的文件的内容的时候(比如发送静态内容),如果操作系统支持sendfile() ,则Apache将使用内核提供的sendfile()来发送文件。使用sendfile可以通过免除分离的读和写操作来提升性能。我们可以通过设置EnableSendfile on来开启它。

阅读(1367) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~