Chinaunix首页 | 论坛 | 博客
  • 博客访问: 245816
  • 博文数量: 52
  • 博客积分: 2263
  • 博客等级: 大尉
  • 技术积分: 695
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-28 12:00
文章分类

全部博文(52)

文章存档

2010年(2)

2009年(20)

2008年(30)

分类: 系统运维

2008-10-21 12:12:45

读apache手册,写下笔记;

安装------------略
配置------------略
调优:

提升性能:
        
        从系统方面:
                    linux2.4内核版本以上,支持sendfile()系统调用
                    不应该使用swap,影响web服务器的最大因素是内存.使用swap会使性能降低.

        从apache的配置上:

             ##########################   不建议使用的选项   ##############################
  
                    hostnamelookups ------->  应设置为off,如果是on的话,会带来延迟,每一次请求
                                               都做一次dns查询,
                   
                    domain使用的是域名而不是ip的话,代价是进行2次dns查询,一次正向,一次反向.
                    为了提高性能,应该不用域名而是用ip做域名.

                    指令应该包含在中使之局部化:
                    HostnameLookup off
                    -----------> 在files声明的范围内,对*.htm或者*.cgi
                                                         使用hostnamelookup on
                        HostnameLookup on
                   


                    symlinksIfOwnerMatch  --------> 这个选项会使apache在处理请求"/index.html"时
                     # 验证符号链接的安全性         对/index.html和/www和/www/htdocs/index.html
                                                    执行lstat()调用,并且这个条用的结果不被缓存.
                                                    因此每一次请求都要执行一次.
                       # 非要使用这个指令的话,这样:
                         DocumentRoot /www/htdocs
                        
                             Option FollowSymLinks
                        


                     # 为了得到最佳性能,应当放弃对符号连接的保护
                       在所有地方都设置FollowSymLinks ,并放弃使用SymLinksIfOwnerMatch


        AllowOverride  -----> 如果网站空间允许覆盖,就是.htaccess文件.则apache会对文件名的
                              每一个组成部分都打开.htaccess,就象下面所设置的:
                             
                                AllowOverride all
                             
                              如果请求/index; 则apache会试图打开/index.html和/www/.htaccess和
                              /www/htdocs/.htaccess.会增加apache的负担.不建议使用.
                        # 为了得到最佳性能,应当对文件系统中所有的地方都使用 AllowOverride None

       内容协商 ---------->   内容协商的好处大于相应的一点性能损失
                              但是这一点损失也是可以挽回的:
                             
                              不使用通配符:
                              DirectoryIndex index

                              而使用完整的列表:最常用的放在最前面
                              DirectoryIndex index.html index.cgi index.php index.pl index.shtml
                                            
      
sendfile ---------->  发送静态内容时性能比较好.使用sendfile可以通过免除分离的读和写操作
                             来提升性能
                             一些平台可能会有Apache编译系统检测不到的有缺陷的sendfile支持,
                             特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前
                             对sendfile支持有缺陷的平台时。
                       # 使用"EnableSendfile off"来禁用sendfile

 #################################  完毕 ##############################################

      进程的建立
                  以前的apache的进程的建立是以StartServers的值为基数,每隔一秒建立一个
                  进程.就是说要同时处理100个客户端的请求的话,如果startservers的值是5
                  那么就要95秒的时间来建立后续的95个进程.

             相关的选项;
                   MinSpareServers指令设置空闲子进程的最小数量。
                      所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数
                      少于MinSpareServers那么Apache将以最大每秒一个的速度产生新的子进程。
                      只有在非常繁忙机器上才需要调整这个参数。将此参数设的太大通常是一个坏主意。

                   MaxSpareServers指令设置空闲子进程的最大数量。
                       所谓空闲子进程是指没有正在处理请求的子进程。
                      如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程


                   keepalive:持久链接,子进程将保持忙碌状态以等待被打开连接上的新请求。
                             为了最小化其负面影响
                             keepalive默认值被设置为5秒,以谋求网络带宽和服务器资源之间的平衡。
                             在任何情况下此值都不应当大于60


Apache 2.x 支持插入式并行处理模块,称为。
       在编译Apache时你必须选择也只能选择一个MPM
       针对非UNIX系统的MPM:, , ,
       对类UNIX系统,有几个不同的MPM可供选择,他们都会影响到httpd的速度和可伸缩性:
  • MPM使用多个子进程,每个子进程中又有多个线程。每个线程处理一个请求。该MPM通常对高流量的服务器是一个不错的选择。因为它比MPM需要更少的内存且更具有伸缩性。

  • MPM使用多个子进程,但每个子进程并不包含多线程。每个进程只处理一个链接。在许多系统上它的速度和MPM一样快,但是需要更多的内存。这种无线程的设计在某些情况下优于MPM:它可以应用于不具备线程安全的第三方模块(比如php3/4/5),且在不支持线程调试的平台上易于调试,而且还具有比MPM更高的稳定性。

其他模块:
      对于编译成dso(动态加载)的模块.去掉它很容易: 注释掉loadModule指令中不需要的模块
      对于编译成静态的模块.只能重新编译apache了.









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