Apache性能调节(摘自于Apache经典实例)

时间:2022-10-03 05:28:52
 
1、决定需要多少内存                                                                                                        
  进程列表中找出Apache的实例,并决定运行Apache进程平均所需的内存容量然后将此数量与可同时服务的客户端的最大数目相乘。            
                                                                                                                         
  ,也没能在linux下算出我的apache所需的内存数量。需要再接再                                                    
                                                                                                                         
2、 以ab来测试Apache的性能                                                                                                  
  运行ab程序如下:                                                                                                        
  ab -n 1000 -c 10 http://xxxx/test.html                                                                                        
                                                                                                                         
  未在实际环境中运行测试                                                                                              
                                                                                                                         
  拟测试只能一定程度上反映服务器的性能。能够获得系统性能是否真的提升了,但不能反映真实的用户的真实行为。                        
                                                                                                                         
3、调节保持连接的设定                                                                                                      
  启用KeepAlive On指令。                                                                                                    
  使用KeepAlive可在时进行多个求。也就是持续连接。                                                                    
  MaxKeepAliveRequests指令在单一连接时间内可允许多少个保持连接的请求。当该为0时,表示在单一连接时间允许不限数目的请求。          
  KeepAliveTimeout指定在没有接受其他请求时,会持续开启特定连接的时间。此指令的最佳设定完全视网站特性而定。在KeepAlive过期前,用户    
  访问下一网页时会在同一连接中获得该文件。                                                                                  
                                                                                                                         
4、取得网站活动的快照                                                                                                      
  想准确地知道服务器正在做什么事。                                                                                          
  启用server-status处理器来取得子进程在运行的快照。启用ExtendedStatus来取得更详细的信息:                                          
  <Location /server-status>                                                                                                  
      SetHandler server-status                                                                                                
  </Location>                                                                                                            
  ExtendedStatus On                                                                                                        
  可在 URL http://servername/server-status上查看结果                                                                          
                                                                                                                         
  启用 mod_status 模块所提供的server-status处理器可以提供服务器活动快照。可获得信息:上次重启动时间、服务器已运行多久、该时间段内已经服务
  的数据量、子进程及其作用的列表。                                                                                          
                                                                                                                         
  上述结果可能包含一些不想被其他用户了解的信息,故需要设定只允许从xxx.xxx.xxx.xxx或其他设定的网络来访问,拒绝未获授权的因特网用户访问。
                                                                                                                         
  做到特定用户访问,需要加入如下内容:                                                                                      
  Order deny, allow                                                                                                        
  Deny from all                                                                                                            
  Allow from xxx.xxx.xxx.xxx                                                                                                  
                                                                                                                         
  但需要加在何位置呢?猜想,里只 server-status起作用,写在 <Location /server-status>    </Location>之              
                                                                                                                         
5、避免DNS                                                                                                          
  避免必须以DNS来询客户端地址的情况。                                                                                    
  将HostNameLookups 设置为Off                                                                                              
  HostNameLookups Off                                                                                                    
  确定所有Allowfrom 或 Deny from指令使用IP地址而非主机名称。                                                                  
                                                                                                                         
  理由:当Allow from 与 Deny from指令进行以主机名称为基准的访问控制时,Apache会采取另外的预防措施以确保客户端不会送出假的主机名称。  
  它会替客户端的IP地址进行DNS询以获得主机名称,并与访问限制对比。为了确定DNS记录不是假造的,它会询所获得的主机名称。          
                                                                                                                         
  问题:怎置会使allow 与 deny from使用IP地址而不是主机名呢?反之呢?需要验证一下。                                  
  问题:怎样设置假的主机名呢?                                                                                            
                                                                                                                         
6、最佳化符号链接                                                                                                        
  是符号接?他又怎影响系性能了?                                                                              
  书上说:为了启用最严格的安全防护,如果很少(甚至从不)使用符号链接,请使用Options SymLiksIfOwnerMatch或Options -FollowSymLinks。      
  为了有最佳的性能,请使用Options FollowSymLinks。                                                                            
                                                                                                                         
7、降低.htaccess文件对性能的影响                                                                                            
  只在必要的目录中启用AllowOverride,告诉Apache不要浪费时间在别的位置查找.htaccess文件                                            
  AllowOverride None                                                                                                      
  然后在<Directory>区块启用必要的.htaccess文件。                                                                              
                                                                                                                         
  为Apache配置指令不仅应用到所设定目录,也包含所有子目录。因此必须检查父目录以及当前目录中的.htaccess文件。                      
  在.htaccess中出现的任何设定都可以出现在引用同一目录的<Directory>区块中。                                                      
                                                                                                                         
  只在必要的特定目录中启用。例如:                                                                                          
  /www/htdocs/user/leopold/的目录中启用.htaccess文件,则应该只让此目录使用.htaccess                                              
                                                                                                                         
  <Director /www/htdocs/users/leopold>                                                                                        
      AllowOverride All                                                                                                      
  </Directory>                                                                                                            
                                                                                                                         
  注意点:在.htaccess文件中可使用的指令类会非常特殊,而且应该只使用真正需要的指令。即应该使用必要的特定指令,而非All参数。          
  尤其尽可能避免使用AllowOverride的Options参数,因为它可以让用户重新启动为了安全防护而停用的功能。                                
                                                                                                                         
  问题:AllowOverride的Options参数是什?怎他就“它可以重新启动为了安全防而停用的功能?”                        
                                                                                                                         
8、停用网页内容协商                                                                                                        
  页内容协商会严重地降低性能。                                                                                            
  如果真的需要使用网页内容协商,请使用type-map处理器而非Multiviews选项:                                                        
  Options -Multiviews                                                                                                      
  AddHandler type-map var                                                                                                  
  当使用MultivViews时,每次送出请求时,Apache都需要取得目录列表。所请求的资源会与目录列表对比,以查看该资源是否还有其他语言的版本。  
  如果所请求的是index.html,则index.html有index.html.fr也会满足该请求。                                                              
  过将信息放入.var文件并改为type-map处理器,可以不城朵取得目录列表,并大幅减少apache在决定传送给用户的正确版本时的必要工作量。    
                                                                                                                         
  例如:如果有index.html的英文、法文或其他文版本,可以编写名为index.html.var的var文件,其中包含各种版本的相关信息。文件内容如下:          
                                                                                                                         
  URI: index.html.en                                                                                                        
  Content-language:en                                                                                                      
  Content-type:text/html                                                                                                    
                                                                                                                         
  URI:index.html.fr                                                                                                          
  Contents-language:en                                                                                                      
  Contents-type:text/html                                                                                                    
                                                                                                                         
  此文件必须和不同版本的资源(即index.html.en、index.html.fr及index.html.he.iso8859-8)放在同一目录中。