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模块,可以看出对于服务器系统运行时间比较长的系统不建议更换模块。