要让apache实现最好的性能,从编译到配置完成,都须步步谨慎

 1.解压apache的压缩包:

[root]#tar  zxvf httpd-2.0.54.tar.gz

[root]#cd httpd-2.0.54

 

2.编译安装:

编译前修改apache的编译文件,主要使其有更大的并发连接:

修改源文件下的worker.c文件

[root]#vi httpd-2.0.54/server/mpm/worker/worker.c

修改DEFAULT_SERVER_LIMIT、MAX_SERVER_LIMIT

以及DEFAULT_THREAD_LIMIT、MAX_THREAD_LIMIT的值,修改为

#define DEFAULT_SERVER_LIMIT 256

#define MAX_SERVER_LIMIT 50000

 

#define DEFAULT_THREAD_LIMIT 256

#define MAX_THREAD_LIMIT 50000
 

3.执行安装:

[root]#./configure --prefix=/home/apache --enable-modules=so --enable-rewrite --enable-deflate  --with-mpm=worker

[root]#make && make install

注:采用worker模式,没有原来的256进程限制

[root]#mv /etc/httpd.conf /etc/httpd.bak

[root]#ln -s /usr/local/caixun/apache2054/conf/httpd.conf  /etc/httpd.conf

//为了统一,注意链接名必须一致


4.编辑apache的配置文件:

[root]#vi /etc/httpd.conf

MEM线程设置(替换原来的内容)

<IfModule worker.c>

StartServers          10  <--启动时生成的子进程

MaxClients          5120  <--所有子进程中的线程总数,也就是同时并发数

MinSpareThreads     25    <--最少的空闲线程数

MaxSpareThreads     500   <--最多的空闲线程数

ThreadsPerChild      256  <--每个子进程包含256个线程,各个线程独立地处理请求

MaxRequestsPerChild  5000 <--每个子进程可处理的请求数,0为不限制

</IfModule>
 
用命令:ps -ef|grep http|wc -l可查看现在的进程数

5.如果apache在编译时没有修改work.c文件,还是可以通过以下方法来修改work的并发数

  需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大
于等于MaxClients,而且 MaxClients必须是ThreadsPerChild的整数倍,否则Apache将会自
动调节到一个相应值(可能是个非期望值)。下面是笔者的 worker配置段:

  <IfModule worker.c>

  StartServers 3

  MaxClients 2000

  ServerLimit 25 <--在Apache 2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients

  MinSpareThreads 50

  MaxSpareThreads 200

  ThreadLimit 200 <--

  ThreadsPerChild 100

  MaxRequestsPerChild 0

  </IfModule>
=========================================
  <IfModule prefork.c>

  StartServers 10

  MinSpareServers 10

  MaxSpareServers 15

  ServerLimit 2000 <--在Apache 2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients

  MaxClients 1000

  MaxRequestsPerChild 10000

  </IfModule>


6.mod_deflate模块的使用
》1.编译mod_deflate模块
[root]#/web/apache2/bin/apxs -i -c -a /web/tool/httpd-2.2.9/modules/filters/mod_deflate.c
=========================================================================================
apxs命令参数说明:
-i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。
-a  此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-A  与 -a 选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。
-c  此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so 。
==========================================================================================
》2.如果apache结合了php,那么要把php的自身压缩机制关闭:
[root]#vi /web/php5/lib/php.ini
=================================================
output_buffering = Off
output_handler =
zlib.output_compression = Off
=================================================
》3.设置httpd.conf文件:
[root]#vi /web/apache2/conf/httpd.conf
=============================================================================
LoadModule php5_module        modules/libphp5.so
LoadModule deflate_module     modules/mod_deflate.so
#---------mod_deflate module confiugration--------------------
SetOutputFilter DEFLATE
DeflateCompressionLevel 6   #<--DeflateCompressionLevel指令设置压缩程度,越高的压缩程度就会有越好的压缩效果,同时也意味着占用越多的CPU资源。

取值范围在 1(最低压缩率) 到 9(最高压缩率)之间。

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4/.0[678] no-gzip
BrowserMatch /bMSIE !no-gzip !gzip-only-text/html
#Explicit exclusion of files.
SetEnvIfNoCase Request_URI /.(?:gif|jpg|cab|jpe?g|exe|bmp|mp3|rar|zip|swf|png)$ no-gzip dont-vary
#Cache server support.
Header append Vary User-Agent env=!dont-vary
#logs.
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate
#-------------------------------------------------------------
==============================================================================
》4.错误处理:
==[root]# /web/apache2/bin/apachectl -t
Syntax error on line 423 of /web/apache2/conf/httpd.conf:
Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
解决方案:安装mod_headers.c模块
/web/apache2/bin/apxs -i -c -a /web/tool/httpd-2.2.9/modules/metadata/mod_headers.c
==[root]# /usr/local/apache2/bin/apachectl -t
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
解决方案:在httpd.conf文件中加入ServerName  [主机名]
==[root]# /usr/local/apache2/bin/apachectl -t
httpd: Syntax error on line 419 of /web/apache2/conf/httpd.conf: module deflate_module is built-in and can't be loaded
解决方案:出现这个情况,表明deflate_module模块是内建的,不用再调入,所以只需要把LoadModule *** 注释就可以了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值