代码改变世界

ubuntu apache2性能调优(一)

2012-08-13 11:19  java环境变量  阅读(1584)  评论(0编辑  收藏  举报

如果Apache的性能要实现最佳,首先就要选择合适的MPM。

Apache有3个MPM:event、prefork和worker

1.   event是MPM中比较适用于需要有大量持续连接(KeepAlive  traffic)的情况。keepAlive的优点是,可以在同一个TCP连接中响应多次请求;

通过这种方式,可以使一个包含大量图片的HTML的文档提速1倍。配置的方法比较简单只需要在配置文件中设置KeepAlive为On,就可以启用KeepAlive。

2.   prefork实现了一个非线程的MPM,主要的特点是:请求访问的速度不是很快,但是很稳定。它能够隔离每个请求,所以如果某个请求出现故障,不会影响其它的请求。

     prefork是由一个主进程,实现派生出一些子进程,如果有访问的请求,客服端不用等待服务器产成子进程的时间所花的时间,还有prefork设置MaxClients数值要设置的恰当,当访问高峰期时,能发挥很大作用,当然不是MaxClients的设的数值越大越好,MaxClients设置的越大,会增加Apache所需要的内存,如果apache所需要的内存超过物理内存的大小,就会出现因apache宕机的可能。(能兼容apache1.3x版本)

3.   worker是Apache2版本新开发的MPM,速度比起prefork要快很多,而且,由于使用多线程进行访问处理,所以能够处理相对海量的请求,系统的占用也要小于基于进程的服务器,同事,worker也使用了多进程,再有每个进程生成多个线程,这样服务器的稳定性要更好一些。

       与prefork的相似之处,worker也是有一个单独的控制进程来负责子进程的建立,并事先派生一些子进程在那里等候。

 

如果需要更好的伸缩性,可以使用worker或event;如果需要更好的兼容性和稳定性(比较适用于一些比较旧的软件),就使用prefork。

 

默认在Ubuntu 9.10以前含Ubuntu 9.10版本,系统默认安装使用的是prefork。但是在Ubuntu10.04版本以后,默认安装的是worker

如果apache 想由prefork模块修改为worker模块,处于系统的安全性和稳定性不建议这个操作,如果是新安装的系统,还有安装任何服务,可以通过一下方法安装。

1.  安装libapache2-mod-fcgid模块

  $  sudo apt-get install libapache2-mod-fcgid

    注意: 如果直接安装apache2-mpm-worker模块,这样会使php无法工作,如果先卸载apache2-mpm-prefork模块,会卸载10几个依赖的软件包,如图:

这样再安装apache2-mpm-worker模块,又要重复安装一些依赖包,所以这种方法也不太适用。

2.  配置fcgid模块

  修改fcgid模块的文件

$   sudo  vi   /etc/apache2/mods-available/fcgid.conf

修改以后的内容是:

<IfModule mod_fcgid.c>
AddHandler fcgid-script .php .py .pl .fcgi
SocketPath /var/lib/apache2/fcgid/sock
IPCConnectTimeout 20
</IfModule>

3.  安装php5-cgi

$   sudo apt-get install   php5-cgi

    修改apache的/etc/apache2/apache2.conf的配置文件,添加一下内容:

<Directory />
FCGIWrapper /usr/bin/php5-cgi .php
Options ExecCGI SymLinksIfOwnerMatch
</Directory>

4.  安装apache2-mpm-worker模块

$  sudo apt-get install apache2-mpm-worker

但这样安装仍然会卸载2个软件包,如图:

安装完worker模块之后还要重新安装php5模块。

通过以上安装worker模块,可以看出对于服务器系统运行时间比较长的系统不建议更换模块。