这天工作没什么事情,翻开看资料,再次学习一下apache的性能优化,以下就说说我的设置及测试。
先说一下我的测试机硬件及软件配置环境:
硬件:一台比较古老的机器,cpu: P42.0 ,内存256,其他的就不多说了。
软件:linux as 4 , apache2.0.59。
先说一下这次安装及配置就是测试apache的性能,如果你打算看其他方面的,那就不要看了,因为偶也没有写,嘿嘿嘿……
./configure --prefix=/usr/local/apache2 --with-mpm=worker --enable-so说明:
MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool}
我这里mpm使用的是worker,以下说明一下mpm个参数;
MPM的引入是Apache 2.x最重要的变化,影响apache2.x 性能的最核心特性,
MPM(Multi -Processing Modules,多道处理模块),运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能。相比于Apache 1.3, 2.x版本本做了大量的优化来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效。但是在编译和运行时刻,2.x也有许多可以显著提高性能的选择。
Beos、mpmt_os2分别是BeOS和OS/2上缺省的MPM。
perchild主要设计目的是以不同的用户和组的身份来运行不同的子进程。这在运行多个需要CGI的虚拟主机时特别有用,会比1.3版本中的SuExec 机制做得更好。
leader和threadpool都是基于worker的变体。
prefork就是Unix平台上缺省的MPM。它所采用的预派生子进程方式也是 Apache 1.3中采用的模式。prefork本身并没有使用到线程,2.x版本使用它是为了与1.3版本保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。若使用prefork,在make编译和make install安装后,使用“httpd -l”来确定当前使用的MPM,应该会看到prefork.c查看缺省生成的httpd.conf配置文件,里面包含如下配置段:
<IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> |